最近我听到了吼叫声。有人可以详细说明吗?
对于客户端应用程序,Java的性能优于.Net。原因是服务器端的.Net环境(iis?)与客户端不同。虽然Java在两端使用相同的环境。由于框架性能主要在服务端进行优化,因此.Net客户端不如.Net服务器端或Java。
更新:我相信他也提到了客户端(XP,VISTA)和服务器(Windows 2008服务器)之间的差异.Net
答案 0 :(得分:7)
在客户端操作系统中,您将获得并发垃圾收集器。它的绝对时间较慢,但用户看起来更快,因为它们的暂停时间更短。
在服务器操作系统中,您将获得一个串行垃圾收集器。整体速度更快,但必须暂停应用程序。
这是旧信息,我不知道它是否仍然是真的。
编辑:Java也有客户端和服务器模式。与.NET不同,它与操作系统无关,而是将其作为命令行参数传递。
编辑2:来自2000年12月的MSDN Magizine
在运行服务器版本的执行引擎(MSCorSvr.dll)的多处理器系统上,托管堆被分成几个部分,每个CPU一个部分。启动集合时,收集器每个CPU有一个线程;所有线程同时收集自己的部分。执行引擎的工作站版本(MSCorWks.dll)不支持此功能。
http://msdn.microsoft.com/en-us/magazine/bb985011.aspx
同样,这是旧信息,可能已经改变。
答案 1 :(得分:5)
这绝对没有意义。
.NET不是服务器端或客户端框架。您在服务器端或客户端使用的部分,但它们都是同一个野兽的一部分。
除了它是否正确之外,大多数(99.9999%)做出像Y performs better than X for some ambiguous and unmeasurable task
这样无条件陈述的人,正如卡林所说的那样,令人尴尬地充满了s ***。
答案 2 :(得分:1)
.NET CLR(公共语言运行时)在服务器和客户端都是相同的。 .NET CLR在概念上与Java VM一样。
答案 3 :(得分:0)
.NET 3.5及更高版本有Client Profiles仅提供适用于客户端应用程序的.NET API子集,但这只是为了减少.NET占用空间而提供的。任何受支持的操作系统都可以安装完整的.NET版本。
我只能猜测该陈述是误解客户档案的结果。
答案 4 :(得分:0)
我从来没有能够向自己证明,一般而言,Java比.NET更快。我已经运行了一些我自己的基准测试,表明恰恰相反,但即便如此,我也不愿意做出如此全面的陈述。
我可以说,在纯代码执行中,.NET在同一台机器上的执行速度比Java快,至少是我上次约2年前测试的最后一次。用C#编写的代码顺便执行比VB.NET快一点,因为C#没有VB.NET所做的所有类型检查。
我以前测试的算法基本上是一个字符串解析器,它接受一个算术表达式的字符串,将其转换为反向抛光表示法,然后确定答案(许多学校教授的东西)。即使我尽力优化Java中的代码,我也无法像VB.NET代码那样快速地获得它。我记得,差异大约是10%。
那就是说,我没有对GC或其他方面进行基准测试,也从来没有能够挖掘出在真实系统中实际测试的良好的无偏见基准。通常你会有人试图证明为什么他们的宗教更好,他们忽视任何其他观点。我确信Java的某些方面有更好的算法可以使原始代码执行速度无效。
简而言之,当人们发表类似的陈述时,请他们备份。如果他们不能或依赖“每个人都知道”,不要在农场上打赌。