7

我想知道“现代”多线程专业语言(如 scala)和“经典”“低级”语言(如 C、C++、Fortran)使用并行库(如 MPI、Posix 甚至 Open-MP)之间的性能是否有任何可靠的比较。

欢迎任何链接和建议。

4

3 回答 3

4

鉴于 Java 以及因此 Scala 可以调用外部库,并且假设那些高度专业化的外部库将完成大部分工作,那么只要使用相同的库,性能是相同的。

除此之外,任何这样的比较基本上都是没有意义的。Scala 代码在具有运行时优化的虚拟机上运行。这种优化可以将长时间运行的程序推向比用其他语言编译的程序更高的性能——或者不是。这取决于用每种语言编写的特定程序。

于 2010-02-20T14:51:56.943 回答
1

这是另一个无法回答的问题:去您当地的超级计算机中心,询问您感兴趣的每种语言使用了多少 CPU 负载。这只会为您的问题提供一个代理答案,它会告诉您谁在解决他们所解决的问题时,他们关心使用此类机器的高性能。但这与您对于如此广泛的问题可能得到的任何其他答案一样具有启发性。

PS 答案将是 Fortran、C 和 C++ 消耗超过 95% 的 CPU 周期。

于 2010-02-20T10:48:02.713 回答
0

我认为这样的比较只是一小部分。分子是一个常数(我相信大约 0.00001)。分母是线程数乘以逻辑处理器数。

IOW,对于单个线程,比较有大约百万分之一的意义。对于运行具有(例如)16 个线程的应用程序的四核处理器,您只有 6400 万分之一的机会获得有意义的结果。

简而言之,毫无疑问,有不少人在研究它,但即使是其中任何一个结果提供有用且有意义的结果的机会仍然极低。更糟糕的是,即使其中一个确实意味着什么,也几乎不可能找到,而且更难以验证到你确实知道它意味着什么。

于 2010-02-19T22:26:23.413 回答