【问题标题】:Does .Net have a different environment for client and server?.Net 对客户端和服务器有不同的环境吗?
【发布时间】:2011-01-24 07:36:41
【问题描述】:

最近我听到了下面的声明。有人可以详细说明一下吗?

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

更新:我相信他也提到了客户端(XP、VISTA)和服务器(Windows 2008 服务器)在.Net 方面的区别

【问题讨论】:

    标签: java .net performance


    【解决方案1】:

    在客户端操作系统中,您会获得一个并发垃圾收集器。它在绝对时间上较慢,但对用户来说似乎更快,因为他们的停顿时间更短。

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

    这是旧信息,不知道是不是真的。


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


    编辑 2:来自 2000 年 12 月的 MSDN 杂志

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

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

    同样,这是旧信息,可能已更改。

    【讨论】:

    • 这基本上是正确的;您遗漏的是该选项是可配置的,并且默认情况下禁用服务器模式(即使在服务器上也是如此)。开关位于machine.configweb.config - configuration/runtime/gcServer 元素中。
    • Java 在认为自己在服务器和客户端环境中运行时也会表现出不同的 GC 行为。
    【解决方案2】:

    这完全没有意义。

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

    除了它是否正确之外,大多数 (99.9999%) 做出像 Y performs better than X for some ambiguous and unmeasurable task 这样无条件声明的人,正如 Carlin 所说,令人尴尬地充满了 s***。

    【讨论】:

    • XP 与 Windows 2003 服务器怎么样? .Net 对它们的作用有什么不同吗?
    • 不,没有,@Yaron Naveh。正如@Jason Punyon 所说,“都是一样的野兽”。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      我只能猜测该声明是误解了客户资料是什么的结果。

      【讨论】:

        【解决方案5】:

        我从来没有能够向自己证明,一般来说,Java 比 .NET 快。我已经运行了一些我自己的基准测试表明完全相反,但即便如此,我也不愿意做出如此笼统的陈述。

        我可以说,在纯代码执行中,.NET 在同一台机器上的执行速度比 Java 快,至少在大约 2 年前我最后一次费心测试时是这样。顺便说一句,用 C# 编写的代码比 VB.NET 执行得快一点,因为 C# 没有 VB.NET 所做的所有类型检查。

        我用来测试的算法基本上是一个字符串解析器,它接受一个算术表达式的字符串,将其转换为逆波兰符号,然后确定答案(许多学校都教过的东西)。即使尽我最大的努力优化 Java 中的代码,我也永远无法像 VB.NET 代码那样快。我记得差异在 10% 左右。

        也就是说,我没有对 GC 或其他方面进行基准测试,也从未能够挖掘出在真实系统中实际测试的良好无偏见基准。通常你会让某人试图证明为什么他们的宗教更好,而他们忽略任何其他观点。我确信在 Java 的某些方面,他们有更好的算法可以抵消原始代码的执行速度。

        简而言之,当人们发表这样的言论时,请他们支持它。如果他们不能或依赖“每个人都知道”,请不要将农场押在他们的陈述上。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-02
          • 1970-01-01
          • 2023-03-23
          • 1970-01-01
          • 2016-02-01
          • 1970-01-01
          • 2015-02-28
          • 2021-04-21
          相关资源
          最近更新 更多