PHP有不同的操作码缓存,如APC,Zend Optimizer来缓存代码并大大提高速度。 Ruby有类似的东西吗?
答案 0 :(得分:4)
默认的Ruby 1.9.x基于字节码VM,此外还有基于Java虚拟机(JRuby)和LLVM(Rubinius和MacRuby)的ruby实现。这些都将进行即时编译和您期望从现代VM中进行的其他优化。
答案 1 :(得分:1)
Rails中的默认生产设置是:
config.cache_classes = true
这意味着代码不会在请求后重新加载,因此它会缓存在内存中。
答案 2 :(得分:1)
就MRI而言,使用Ruby 2.3实验性字节码缓存已released。
启用此功能所需要做的只是要求 'yomikomu'rubygem并设置了一些环境变量 在这里,您可以在上面的示例中找到两个导出命令。
为什么只启用VM级字节码缓存可能看起来有些神奇 通过要求'yomikomu'rubygem。 Koichi在他身上描述了这一点 票。
这是当前字节码缓存实现的快速基准测试结果。我在Ubuntu机器上使用了带有benchmark-ips的'bundle version'命令。源
该帖子还为这一新发布的功能提供了一些基准:
$ ruby measure.rb
Comparison:
yomikomu(fs): 5.0 i/s
yomikomanai: 3.6 i/s - 1.40x slower
其他ruby实现可能能够利用平台本机优化 - 例如。 JRuby受益于JVM JIT的性能优势。