![]() |
1
3
1.8.6在该区域的速度较慢。1.8.7做得更好,1.9.1做得更好。我不知道为什么,但RVM同意你的观点,并且说1.8.6的速度非常慢。 1.8.6: Rehearsal ------------------------------------------------ float-multip 0.140000 0.000000 0.140000 ( 0.141560) float-square 0.150000 0.000000 0.150000 ( 0.146286) int-multip 0.220000 0.000000 0.220000 ( 0.223255) int-multip 0.180000 0.000000 0.180000 ( 0.183850) --------------------------------------- total: 0.690000sec 1.8.7: Rehearsal ------------------------------------------------ float-multip 0.090000 0.000000 0.090000 ( 0.092346) float-square 0.080000 0.000000 0.080000 ( 0.080335) int-multip 0.070000 0.000000 0.070000 ( 0.068012) int-multip 0.080000 0.000000 0.080000 ( 0.081713) --------------------------------------- total: 0.320000sec 1.9.1: Rehearsal ------------------------------------------------ float-multip 0.070000 0.000000 0.070000 ( 0.065532) float-square 0.080000 0.000000 0.080000 ( 0.081620) int-multip 0.060000 0.000000 0.060000 ( 0.065371) int-multip 0.070000 0.000000 0.070000 ( 0.065761) --------------------------------------- total: 0.280000sec |
![]() |
2
5
我想到了一些事情。您没有指定正在使用的Ruby实现。因为您在Windows上运行Ruby1.8.6,所以我假设您使用的是通过Windows一键安装程序安装的MRI。 这是一种最坏的情况:
以下是一些您可以尝试提高性能的提示:
在后两种情况下,您可能需要稍微修改基准。两者最终都可以将Ruby代码编译为本机代码,但这可能需要一段时间。例如,jruby在方法执行20次之后编译为jvm字节码,hotspot服务器在执行20000次之后将jvm字节码编译为本机代码。此外,编译本身需要时间,因此程序需要运行一段时间,通过改进性能来收回成本。 特别是,JRuby的主要开发人员之一CharlesOliverNutter说,根据工作负载的不同,JRuby可能需要5-15秒才能达到全速。你的基准测试太快了100倍(这是一个你每天都听不到的句子…)。 |
![]() |
3
0
我不能解释你的桌子。但我可以解释我的(Ruby1.8.7):
哎哟。整数乘法胜过浮点乘法。 因为您的处理器比我的慢5倍(我在基准测试中增加了10倍的重复次数),所以一定有一些与Ruby无关的东西。
|
![]() |
4
0
JRuby可能有更快的算法(或1.9.x),也可以在C语言中执行(例如: http://segment7.net/projects/ruby/inline_optimization.html )显然有助于加速 |