最佳(Python)设置用于CPU / 内存密集型任务

3
我正在进行一项模拟,生成数千个结果对象。每个对象大小约为1MB,并且所有结果对象都应该在内存中以便查询各种特定的报告。每生成一个结果对象需要1至2秒钟。
因此,即使我充分利用四核CPU进行并行执行,获取一个模拟所需的时间也超过了5分钟。对于一个模拟集,任务进程需要4至5GB的内存。问题是,我想同时运行更多的模拟集并更快地完成它们。
目前,我正在使用C#和IronPython在Windows Vista64上完成这项工作,我的四核CPU有8GB的内存。我将订购一台新电脑,拥有24GB的内存和更好的CPU,最终可能会购买带有多个CPU和更多内存的工作站。
那么我的问题是,如何最好地利用新硬件?我考虑以下组合之一:
1. 在Windows 64位上使用IronPython + C#。 2. 在Linux 64位上使用IronPython + C#(Mono)。 3. 在Windows 64位上使用Jython + Java。 4. 在Linux 64位上使用Jython + Java。
模拟引擎是用C# / Java编写的,我使用Python制作报告。您认为哪种组合最好?
处理消耗大量内存任务方面,.NET和Java平台之间没有太大区别吗?Windows和Linux之间没有区别吗?
我有时在我的Ubuntu笔记本电脑(32位,2GB RAM)上运行当前的C# + IronPython代码,并且感觉与相同规格硬件上的Windows .NET环境相比似乎非常稳定。但我不知道当底层硬件更好时会发生什么。
欢迎提出任何建议,不论以上选择如何。

请在http://serverfault.com上提问。 - jmservera
2个回答

2

既然你可以免费安装所有这些软件,并且听起来你已经在.Net和Java中实现了代码,那么我建议你在所有四个平台上(Windows/Linux * Java/.Net)对程序进行基准测试。

听起来所有的重活都是在Java/C#中完成的,所以我认为Jython与IronPython的相对性能在很大程度上是无关紧要的。


2

@Dave说得很对,如果你真的关心,可以对每个组合进行基准测试。

个人建议您坚持使用您最熟悉的工具集,无论是Windows、Java、Linux、.Net还是任何随意组合。在维护和开发软件方面,您的生产力通常比从操作系统或虚拟机切换带来的轻微性能提升更为重要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接