如何是单声道的虚拟机目前的表现?(How is the current performance of

2019-07-30 11:08发布

该网站是完全不同类型不同的语言,编译器和虚拟机的性能测试的。 然而,几乎没有使用真实世界的场景中任何一个测试性能。 此外,对于这些类型的基准谷歌搜索通常会产生主要短短几年之久的基准那些有过最长时间来收集它们的链接。

你们当中有一些真正见识到不同的虚拟机目前的表现? 另外我特别想知道如何单声道的效果的对比于那些微软的.Net和Sun的Java,以及如何不同的虚拟机的性能近来发展的。

Answer 1:

衡量性能是一件复杂的事情。 在过去,当语言测试针对相同的操作系统,运行在相同的硬件和一组非常有限的库,它可以创建基准,可以给能够测量系统的线性度的。 这将让人们评估从零事到十,吸收的结果,并迅速转移到下一个主题。

因为有多个变量要考虑到事情已经变得更加复杂与现代的系统。

至少在Mono的情况下,有很多是发挥作用的变量:

  • 码:

    • 本机代码的质量产生的。
    • 在其中产生本地代码的速度。
    • 存储器所需生成代码和优化代码
    • 是代码生成多线程
    • 是生成的代码线程安全
    • 是否利用CPU的特定功能,在编译时或JIT时间。
    • 如果可用它可以使用SIMD指令。
    • 请问语言地图本身整齐到多核平台
    • 请问语言的optimizier来调整你的代码会自动提供足够的参数(如Fortran一样)。
  • 内存管理:

    • 所使用的垃圾收集算法
    • 是否具有多个CPU的GC规模有多大?
    • 是GC增量,或实时?
    • 它支持以提高性能线程本地存储?
    • 它是精确的,压实,世代,保守和每个什么混合。
  • API的设计:

    • 是专为延迟或带宽的API
    • 做API的支持自动扩展到多个CPU。
    • 你可以卸载重型工作提高到一个GPU?
    • 做你的API的支持流媒体接口

所有这些事情非常复杂的问题,并做一个简单的0至10的回答很辛苦付出。

如果你在课堂上进行分区的语言,并承担主管和性能认识的程序员,我会瓜分世界的这些类:

  • 第1层:由专业手工调整的汇编语言
  • 第2层:静态编译,强类型语言:C / C ++ / Fortran的/
  • 第3层:管理/ JIT语言:用Java / C#/。NET /单声道/ BOO / F#
  • 第4层:动态类型/ JIT编译的语言:谷歌V8,IronPython的,IronRuby的
  • 第5级:纯解释型语言:Python和Perl的
  • 第6层:纯解释型语言,有太多的功能对自己的好。

但语言不上油漆的整个画面,你会消耗的API,主机操作系统和其他设施,将会对你的结果有很大的影响。

例如,最近在单我们增加了一个更先进的,高度优化的引擎(LLVM引擎)更换Mono的代码生成引擎支持。 事实证明,这是令人难以置信的很难找到一个测试,使用LLVM的开销是值得的额外内存使用:桌面和Web应用程序并没有表现出很大的差别。 这可能是由于这样的事实:这些系统大都I / O密集型应用程序。

使用LLVM是为科学和计算密集型应用程序,但在现实生活中并没有太大的从Mono的默认优化设置的差别。

至于单的细节:虽然单确实使用贝姆的GC,大多数人不知道的是,贝姆可以以多种方式进行配置。 默认配置外行的确不是很强大,但它的作品给大家想要快速GC。 单并不在此模式下使用伯姆,单声道配置伯姆广泛地在精确模式以及以线程本地存储,多核心GC和释放内存到的-OS模式的优点工作。



Answer 2:

对于Java和Mono的比较,你可以看看计算机语言基准游戏 。



Answer 3:

虽然我还没有使用单声道,我想这取决于你用它做什么。 我无法给你确切的数字上的东西,但这里是关于Mono的浮点性能趣闻:

http://forums.xna.com/forums/p/24249/24249.aspx

为单声道允许使用你的CPU的SIMD指令(SSE2和SSE4的那一刻,我相信),大大加快浮点运算,它可以在这种事情(最多快10倍)吹走.NET,如下图节目(希望微软将很快实施类似的东西,.NET 4.5,好吗?)。 然而,图表还显示,.NET仍然显著不使用Mono.Simd时比单快。 你可以带信心的一个巨大的飞跃,并推断在浮点性能到其他领域,如串性能有20%的差异。

然而,这是单声道2.2,事情可能已经发生了巨变Mono是这些天移动相当快,还是让我听到。



Answer 4:

我为基准单声道2.0和2.2在今年早些时候SciMark2 ,发现单声道的表现也略有增加,但仍远高于其他大多数虚拟机慢。



Answer 5:

我知道这是老了,但我只是发现它并没有在当前的回答(甚至Miguel的)在你的问题解决的根本缺陷:虚拟机。

你似乎被错误地告知这一点。 .NET没有使用VM,而且也不单。 该.NET使用一个运行时库 ,以及代码中并编译成IL的类似于Java的字节码部署这是真的。 然而,运行时间是不是虚拟机。 不同的是,在部署后IL本身是完全编译执行之前机器码。 没有虚拟机需要申请。



文章来源: How is the current performance of the Mono virtual machine?