Web充满了不同语言,编译器和虚拟机的各种性能测试。但是,几乎没有任何一种方法可以在某些实际情况下测试性能。此外,在Google中搜索此类基准通常只能产生数年的基准,因为那些基准有最多的时间来收集与它们的链接。
你们中的任何人对不同虚拟机的当前性能有真正的了解吗?另外,我特别想知道Mono的性能如何与Microsoft .Net和Sun的Java相比较,以及最近不同虚拟机的性能如何发展。
最佳答案
衡量性能是一件复杂的事情。过去,当针对相同的操作系统,相同的硬件和一组非常有限的库对语言进行测试时,就有可能创建基准,以提供一个可以衡量系统的线性指标。它将使人们从零到十评估事物,吸收结果并快速进入下一个主题。
对于现代系统,由于要考虑多个变量,因此事情变得更加复杂。
至少在Mono的情况下,有很多变量在起作用:
所有这些使事情变得非常复杂,很难给出简单的0到10的答案。
如果您要在类中对语言进行分区,并且假设您是一个有能力且有性能意识的程序员,那么我将在这些类中划分世界:
但是这些语言并不能说明全部情况,您将使用的API,托管操作系统和其他功能将对您的结果产生很大的影响。
例如,最近在Mono中,我们增加了对以更高级,高度优化的引擎(LLVM引擎)替换Mono的代码生成引擎的支持。事实证明,在使用LLVM的开销值得额外的内存使用的情况下,找到一个难以置信的测试是非常困难的:台式机和Web应用程序没有太大的区别。这可能是由于这些大多数都是受I/O约束的应用程序。
使用LLVM对于科学和计算密集型应用程序很有用,但是在现实生活中,它与Mono的默认优化设置没有太大的区别。
至于Mono的细节:尽管Mono确实使用了Boehm的GC,但是大多数人没有意识到的是Boehm可以通过各种方式进行配置。默认的外行配置确实不是很强大,但是它适用于所有需要快速GC的人。 Mono在此模式下不使用Boehm,Mono广泛配置Boehm以使其在精确模式下工作,并充分利用线程本地存储,多核GC和OS释放内存的模式。
关于.net - Mono虚拟机的当前性能如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1150002/