2010-03-05 45 views
2

最近我听到了下面的声明。有人可以详细说明吗?.Net对客户端和服务器有不同的环境吗?

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

更新:我相信他也提到了客户端(XP,VISTA)与服务器之间(的Windows 2008服务器),相对于净

回答

7

在客户端操作系统中,您将获得一个并发垃圾收集器。绝对时间较慢,但用户觉得速度较快,因为它们的停顿时间较短。

在服务器操作系统中,您会得到一个串行垃圾回收器。它整体速度更快,但不得不暂停应用程序。

这是旧信息,我不知道它是否仍然如此。


编辑:Java也有客户端和服务器模式。与.NET不同的是,它并不依赖于操作系统,而是将其作为命令行参数传递。


编辑2:从MSDN Magizine在2000年12月

在运行所述执行引擎(MSCorSvr.dll)的服务器版本的多处理器系统中,托管堆被分成几个部分,每个CPU一个。启动收集时,收集器每个CPU有一个线程;所有线程同时收集自己的部分。执行引擎的工作站版本(MSCorWks.dll)不支持此功能。

http://msdn.microsoft.com/en-us/magazine/bb985011.aspx

再次,这是旧信息,并可能已经改变。

+3

这实质上是正确的;你遗漏的是该选项是可配置的,服务器模式在默认情况下被禁用(即使在服务器上)。该开关位于'machine.config'或'web.config' - 'configuration/runtime/gcServer'元素中。 – Aaronaught

+0

当Java认为它在服务器和客户端环境中运行时,它也表现出不同的GC行为。 –

5

差这使得完全没有意义。

.NET不是服务器端或客户端框架。有些部分可以在服务器端或客户端使用,但它们都是同一个野兽的一部分。

除了是否正确之外,像卡尔林所说的那样,像Y performs better than X for some ambiguous and unmeasurable task这样的无条件陈述的大多数人(99.9999%)都会感到尴尬地充满了s ***。

+0

XP与Windows 2003服务器有什么关系?每个.Net行为之间有什么区别? –

+0

不,没有,@ Yaron Naveh。就像@Jason Punyon所说的那样,“同样的野兽。” – cazlab

1

.NET CLR(公共语言运行时)在服务器和客户端上是相同的。 .NET CLR在概念上与Java VM相似。

+0

请引用。 –

0

对于.NET 3.5及更高版本,有一些Client Profiles仅提供了适用于客户端应用程序的.NET API的子集,但这只是为了方便减少.NET占用空间而提供。任何支持的操作系统均可安装完整的.NET版本。

我只能猜测该声明是误解客户端配置文件的结果。

0

我从来没有能够向自己证明,一般来说,Java比.NET快。我已经运行了一些我自己的基准测试,表明情况正好相反,但即使如此,我也不愿意做出这样一个全面的声明。

我可以说,在纯代码执行,.NET执行速度越快的Java在同一台机器上,至少我最后一次打扰测试约2年以前。用C#编写的代码偶尔执行速度比VB.NET快一点,因为C#没有检查VB.NET的所有类型。

我以前测试该算法基本上是一个字符串解析器使用一个字符串这是一个算术表达式,将它变成逆波兰表示法,然后确定的答案(东西在许多学校教导)。即使尽我所能来优化Java代码,我也无法像VB.NET代码那样快速获得它。我记得,差异约为10%。

这么说,我还没有基准GC或其他方面和永远不可能挖出好公正的基准,实际上无论是在真实十岁上下的系统测试。通常你会有人试图证明为什么他们的宗教信仰更好,他们忽视了其他观点。我敢肯定,Java的某些方面有更好的算法,会使原始代码执行速度无效。

总之,当人们发表这样的言论时,请他们支持。如果他们不能或不能依靠'每个人都知道',那么不要在农场发表声明。

相关问题