PHP的Ruby的APC模拟?

PHP有不同的操作码缓存,如APC,Zend Optimizer,用于缓存代码并显着加快速度。 Ruby有类似的东西吗?

默认的Ruby 1.9.x基于字节码VM,此外还有基于Java虚拟机( JRuby )和LLVM( Rubinius和MacRuby )的ruby实现。 这些都将进行即时编译和您期望从现代VM中进行的其他优化。

Rails中的默认生产设置是:

config.cache_classes = true 

这意味着代码不会在请求后重新加载,因此它会缓存在内存中。

就MRI而言,实验性字节码缓存已经在Ruby 2.3中发布 。

要启用此function,您只需要执行’yomikomu’rubygem并设置一些环境变量,因为您可以在上面的示例中找到两个导出命令。

为什么只有通过要求’yomikomu’rubygem才能启用VM级字节码缓存,这看起来有点神奇。 Koichi在他的机票上描述了这一点。

这是当前字节码缓存实现的快速基准测试结果。 我在Ubuntu机器上使用了带有benchmark-ips的’bundle version’命令。 资源

该post还为这个新发布的function提供了一些基准:

 $ ruby measure.rb Comparison: yomikomu(fs): 5.0 i/s yomikomanai: 3.6 i/s - 1.40x slower 

其他ruby实现可能能够利用平台本机优化 – 例如。 JRuby受益于JVM JIT的性能优势。