我正在寻找最适合我正在构建的分析模型的编程语言。主要考虑因素是运行 FOR 循环的速度。
一些细节:
- 该模型需要对数组中的一组元素执行大量(每个条目约30次,在12个周期内)操作 -- 数组中有约300k行和150列。其中大多数操作都是逻辑性质的,例如,如果place(i) = 1,则j(i) = 2。
- 我已经使用Octave构建了此模型的早期版本--在Amazon EC2 m2.xlarge实例上运行它需要约55小时(它使用了约10 GB的内存,但我完全可以为其提供更多内存)。Octave/Matlab无法执行逐元素逻辑运算,因此需要大量的for循环--我相当确定我已经向量化了尽可能多的内容--剩下的循环是必需的。我已经让octave-multicore与此代码配合使用,这使得一些改进成为可能(当我在8个EC2核心上运行它时,速度降低了约30%),但最终会因文件锁定等问题而不稳定。 +我真的希望能够实现运行时间的飞跃--我知道实际使用Matlab可能会让我获得多达50%的改进,从某些基准测试中可以看出,但这是成本禁止的。当开始这项工作时,最初的计划是实际运行蒙特卡罗模拟,但以55小时的运行时间来看,这完全不切实际。
- 下一个版本将从头开始进行完全重建(出于知识产权等原因,如果没有其他原因,我不会深入讨论),因此我完全开放任何编程语言。我最熟悉Octave/Matlab,但已经涉猎了R、C、C++、Java。如果解决方案涉及将数据存储在数据库中,则我也精通SQL。我会为此学习任何语言--我们正在寻找的不是复杂的功能,不涉及与其他程序的接口等,因此不太担心学习曲线。
那么,就所有这些而言,哪种编程语言对于 FOR 循环最快? 从SO和Google的搜索结果来看,Fortran和C排名靠前,但在深入研究之前,希望能得到更多建议。
谢谢!