我想知道是否有可靠的性能比较,可以比较“现代”的多线程专用语言(例如scala)和“传统”的“低级”语言(如C、C++、Fortran),使用并行库如MPI、Posix甚至Open-MP。
欢迎提供任何链接和建议。
我想知道是否有可靠的性能比较,可以比较“现代”的多线程专用语言(例如scala)和“传统”的“低级”语言(如C、C++、Fortran),使用并行库如MPI、Posix甚至Open-MP。
欢迎提供任何链接和建议。
考虑到Java和Scala可以调用外部库,而那些高度专业化的外部库将完成大部分工作,因此只要使用相同的库,性能就是相同的。
除此之外,任何这样的比较基本上都是毫无意义的。Scala代码运行在一个具有运行时优化的虚拟机上。该优化可以使长时间运行的程序比使用其他语言编译的程序更具性能——或者不是这样的。这取决于每种语言编写的具体程序。
这里有另一个不是答案的建议:去你当地的超级计算机中心,询问每种你感兴趣的语言所使用的CPU负载的比例。这只会给你一个代理答案,它会告诉你那些关注在这样的机器上高性能的人在解决他们所面对的问题时使用了什么。但这和其他任何你可能得到的答案一样具有启发性,因为这是一个非常广泛的问题。
附言:答案将是Fortran、C和C++消耗了超过95%的CPU周期。
我认为这样的比较可以看作是一个分数。分子是一个常数(大约是0.00001)。分母是线程数乘以逻辑处理器数。
也就是说,对于单个线程,这种比较有一百万分之一的机会意味着什么。对于一个四核处理器运行具有(例如)16个线程的应用程序,你只有六千四百万分之一的机会得到有意义的结果。
简而言之,毫无疑问有很多人在研究它,但即使其中任何一个人提供了有用和有意义的结果,其概率仍然极低。更糟糕的是,即使其中一个真的有意义,要找到它几乎是不可能的,甚至更难以验证到你实际上“知道”它有意义。