【问题标题】:Java vs C#: Are there any studies that compare their execution speed?Java vs C#:有没有比较它们的执行速度的研究?
【发布时间】:2009-06-26 13:00:48
【问题描述】:

排除与基准测试和基准比较相关的所有明显警告,是否有任何研究(一系列有据可查且无偏见的测试)比较了上述两种语言的平均执行速度? 谢谢

【问题讨论】:

  • 你可能想查一下这个:shootout.alioth.debian.org。但请注意,他们使用 Mono 而不是 Microsoft.NET 测试 C#。
  • 这些基准测试倾向于假设您对无限的高技能开发人员时间有很好的理解。对于具有不断变化的需求和少数具有混合能力的开发人员的实际项目,情况要复杂得多,纯粹的微基准速度变得不那么重要。
  • 如果您只寻找启动性能,这是一个很好的基准:codeproject.com/KB/dotnet/RuntimePerformance.aspx

标签: c# java .net benchmarking


【解决方案1】:

据我所知,最好的比较是The Computer Language Benchmarks Game

它比较了(当前)10 个基准测试的速度、内存使用和源代码大小,涵盖了大量编程语言。基准测试的实施是用户提交的,并且会不断改进,因此排名会有所变化。

目前比较的是openjdk vs C# .NET Core。

Currently it is close, but .NET Core is slightly faster on most benchmarks.

【讨论】:

  • 我认为将 Java 与 Mono 进行比较没有多大意义,MS 的 .net 运行时可能比 Mono 快很多。
  • @ammoQ:这也是我的猜测。但是我查了一下,下面的文章似乎表明性能相当:geekswithblogs.net/CISCBrain/articles/…
  • @ammoQ,有什么理由相信 .NET 默认比 Mono 快吗?
  • @Thorbjørn:不,只是内心的一种感觉和一些过时的经历,我不会费心讲述。关于它的一些讨论(包括 Jon Skeet 的贡献):eggheadcafe.com/software/aspnet/32289725/…
  • 你的假设是正确的。我记得不久前看到过这个。寻找有关 Vala 语言的基准(本质上是 c# 被翻译成标准 c),它有一个 mono vs .net 的基准
【解决方案2】:

这里有一个关于这个主题的nice recent study

C、C# 和 Java 中的数值性能

彼得·塞斯托夫特 (sestoft@itu.dk)

丹麦哥本哈根 IT 大学

2010-02-19 版本 0.9.1

摘要:我们比较了 C、C# 和 Java 的三个小案例。

...

【讨论】:

  • 论文的结论:“实验表明,不同软件平台的执行速度之间没有明显的关系,即使对于这里研究的非常简单的程序:C、C#和Java平台的速度最快和最慢。”
  • 他们在 Mac OS X 上执行测试程序。对于 C#,他们使用单声道并使用虚拟机来测试 .net 运行时的性能。在我看来,C# 基准值是有缺陷的。
  • 再一次,单声道比 CLR 慢 100%
  • “数值性能”是指使用没有任何对象、虚函数等的原始类型。它错过了 80% 的语言。
【解决方案3】:

两种语言在性能方面都在不断发展。至少在 2013 年,微软自己的 Joe Duffy blogged

Java 比 C# [在性能上更接近 C++],这要归功于在类似 HotSpot 的 VM 中的出色工作,这些 VM 采用了代码调整和堆栈分配。

【讨论】:

    【解决方案4】:

    这可能会引发一场激战,但是,嘿,这是我的看法...
    首先,如果您的网站运行速度太慢,您将需要更好的硬件。或更多硬件并为您的站点添加负载平衡。如果您是 Google,那么您最终将拥有拥有数千台机器的庞大服务器场,这些机器似乎可以提供闪电般的性能,即使这些网站本身是用某种过时的语言开发的。
    大多数语言都经过了优化从他们的硬件中获得最好的,并且在这个特定的环境中通过特定的设置将胜过任何其他语言。比较语言没有多大意义,因为有成千上万种技术可以进一步优化它们。此外,您如何衡量绩效?
    假设您查看执行速度。语言 X 执行某些任务的速度可能比语言 Y 快 2 倍。但是,语言 Y 更适合运行多线程,并且可以在相同的时间内为语言 X 多 10 倍的用户提供服务。将此与 Y 在客户端/服务器环境中结合起来会快得多。
    但是然后将 X 安装在具有 X 非常喜欢的操作系统的优化系统上,并带有额外的硬件、数以亿计字节的内存和磁盘空间以及十几个 CPU 和 X 将再次击败 Y。
    那么,了解语言的执行速度有什么价值?甚至是语言的比较?我们怎么知道创建报告的人没有偏见?我们如何确定他们对每种语言都使用了最佳设置?他们甚至编写了要测试的最佳代码吗?无论如何,您如何比较最终结果?每个用户的执行时间?还是总执行时间?
    回到语言 X 和 Y。X 在 2 秒内运行一个任务,但它同时只支持 10 个线程,即 10 个用户。 Y 需要 6 秒,但同时服务多达 50 个线程。 X 每个用户会更快。在两秒钟内,X 处理了 10 个用户。在 6 秒内,X 处理了 30 个用户。但是到那时 Y 已经处理了 50 个用户。因此,当您拥有大量用户时,Y 的表现会优于 X,而在用户数量较少的情况下,X 的表现会优于 Y。 (或线程。)看到报告提到这一点会很有趣,对吧?

    【讨论】:

    • 这个答案更像是一个评论,而不是一个答案。
    • 基本上,我是说你无法比较两种不同的语言,即使它们非常相似,就像 C# 和 Java 一样。因此,语言比较是没有用的,除非您是针对一个非常具体的领域进行比较。
    • 别着急,至少比600字的评论长! :D
    【解决方案5】:

    2021

    概述

    多年来,使用 Java 或在 .NET/C# 上创建的应用程序具有相似的性能水平。不过,微软和许多第三方贡献者在这方面的优化上进行了一些重大投资,并不断改进。例如,ASP.NET Core Web 框架允许您在单个服务器上每秒处理 700 万个请求。根据 TechEmpower 测试,ASP.NET Core 遥遥领先于任何 Java Web 框架。

    研究

    https://github.com/ixy-languages/ixy-languages

    这是另一个很好的演示,可以在 .NET 平台上实现性能 - 一个用不同语言编写的超快速网络驱动程序的示例。用 C# 编写的驱动程序显示出与 C 和 Rust 几乎相同的性能水平,略优于 Go 语言,并且远远领先于包括 Java 在内的所有其他高级语言。

    Source

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-21
      • 1970-01-01
      • 2020-05-10
      • 2016-06-25
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多