.Net是否为客户端和服务器提供了不同的环境?

时间:2010-03-05 22:00:22

标签: java .net performance

最近我听到了吼叫声。有人可以详细说明吗?

  

对于客户端应用程序,Java的性能优于.Net。原因是服务器端的.Net环境(iis?)与客户端不同。虽然Java在两端使用相同的环境。由于框架性能主要在服务端进行优化,因此.Net客户端不如.Net服务器端或Java。

更新:我相信他也提到了客户端(XP,VISTA)和服务器(Windows 2008服务器)之间的差异.Net

5 个答案:

答案 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的某些方面有更好的算法可以使原始代码执行速度无效。

简而言之,当人们发表类似的陈述时,请他们备份。如果他们不能或依赖“每个人都知道”,不要在农场上打赌。

相关问题