Java vs C#:有没有比较执行速度的研究?
拿出与基准和基准比较有关的所有明显的警告,是否有任何研究(一系列有据可查,无偏见的testing)来比较两种语言的平均执行速度? 谢谢
我知道的最好的比较是计算机语言基准游戏 。
它比较了大量编程语言的(当前)11个基准testing的速度,内存使用和源代码大小。 基准的实现是用户提交的,并有持续的改进,所以排名有所转移。
所有的比较都是在Linux上完成的,所以它是C#/ Mono,而不是C#/ Microsoft.NET。 但是,我的印象是,这两个现在的速度是可比的。
目前Java正在速度上获胜,但C#/ Mono正在赢得内存使用。 ,但请注意,由于某些原因,Java实现是multithreading的,而大多数C#/ Mono实现是单线程的。
这是一个很好的近期研究 :
C,C#和Java中的数字性能
Peter Sestoft(sestoft@itu.dk)
IT丹麦哥本哈根大学
版本0.9.1的2010-02-19
摘要:我们比较了C,C#和Java在三个小案例中的数值性能。
…
这可能会引起一场火焰战争,但是,嘿,这是我的观点…
首先,如果你的网站运行速度太慢,你需要更好的硬件。 或者更多的硬件,并为您的网站添加负载平衡。 如果您是Google,那么您将拥有数千台机器的大型服务器农场,即使这些网站本身是以某种过时的语言开发的,它们似乎也能提供快速的性能。
大多数语言都经过优化,以便从硬件中获得最佳性能,并且在特定环境下通过特定的设置可以超越其他任何语言。 比较语言没有什么意义,因为有成千上万的技术来优化它们。 另外,你如何衡量performance?
假设你看执行速度。 语言X可能比语言Y执行的任务快2倍。但是,语言Y对于运行多个线程来说是更加优化的,并且在相同的时间内可以比语言X多10倍的用户。 结合这和Y在客户机/服务器环境中要快得多。
但是,在一个经过优化的系统上安装X,这个系统的X需要很多操作系统,额外的硬件,一个十亿字节的内存和磁盘空间以及十几个CPU,而X将再次击败Y.
那么,知道语言执行速度的价值是什么? 甚至比较语言? 我们怎么知道创build报告的人没有偏见? 我们如何确保他们使用每种语言的最佳设置? 他们甚至写了最优化的代码来testing吗? 你怎么比较最终的结果呢? 每个用户的执行时间? 或总执行时间?
回到语言X和Y.X在2秒内运行一个任务,但它只能同时支持10个线程,因此有10个用户。 Y需要6秒,但同时提供多达50个线程。 X会更快,每个用户。 在两秒钟内,X已经处理了10个用户。 在6秒钟内,X已经处理了30个用户。 但那个时候Y会处理50个用户。 因此,当你拥有大量的用户时,Y将胜过X,而X用低数量的用户胜出Y. (或者线程)看到有报道提到这个会很有趣,对吗?
两种语言在性能方面都在不断发展。 至less在2013年,微软自己的Joe Duffy 博客 :
与C#相比,Java更接近C ++的性能,这要归功于使用代码投影和堆栈分配的类似HotSpot的虚拟机的出色工作。