ruby
版本:
ruby1.9.3-p327
ruby1.9.3-p327 + rvm补丁集合
ruby1.9.3-p327 + falcon.diff
ruby1.9.3-p327 + falcon-gc.diff
rvm补丁集合:
测试中没有使用rvm,而是直接使用官方的ruby1.9.3-p327,所以只打了rvm补丁集合中的1、2、5、7、8、9这6个补丁
falcon的性能补丁:
其中 falcon.diff 和 falcon-gc.diff 的区别在于:
falcon.diff 是没有集成 backport-gc 补丁的,因为作者说他没有感到这个补丁带来任何的好处
falcon-gc.diff 是集成了 backport-gc 补丁的,给认为这个补丁有效果的用户使用
另外作者还给出了一个详细的补丁说明,可以根据自己的需求单独选择
这份补丁集包含6个补丁,其中01、04、06合并为了falcon.diff这个补丁,falcon.diff和05合并成了falcon-gc.diff补丁;这里的02补丁可以加速
hash,03补丁可以加速方法、常量和
实例变量的查找,已经被合并在06中。可以根据自己的需求安装。
测试结果:
测试方式使用rake routes的方式,项目使用了刚完成的
CSDN论坛项目,算是一个比较大型的项目了
time bundle exec rake routes
引用ruby1.9.3-p327 —— 10.462s
ruby1.9.3-p327 + rvm —— 6.042s
ruby1.9.3-p327 + falcon.diff —— 5.793s
ruby1.9.3-p327 + falcon-gc.diff —— 5.868s
调整GC参数:
export RUBY_GC_MALLOC_LIMIT=60000000
export RUBY_FREE_MIN=200000
引用ruby1.9.3-p327 —— 7.010s
ruby1.9.3-p327 + rvm —— 5.083s
ruby1.9.3-p327 + falcon.diff —— 4.884s
ruby1.9.3-p327 + falcon-gc.diff —— 5.102s
再次调整GC参数:
export RUBY_GC_MALLOC_LIMIT=1000000000
export RUBY_FREE_MIN=500000
export RUBY_HEAP_MIN_SLOTS=40000
引用ruby1.9.3-p327 —— 6.846s
ruby1.9.3-p327 + rvm —— 4.915s
ruby1.9.3-p327 + falcon.diff —— 4.732s
ruby1.9.3-p327 + falcon-gc.diff —— 4.943s
GC参数调整说明:
默认ruby支持上面三个环境变量,如果打了02-railsbench-gc.patch这个补丁后,则可以支持:RUBY_HEAP_SLOTS_GROWTH_FACTOR,RUBY_HEAP_SLOTS_INCREMENT,RUBY_HEAP_FREE_MIN(同RUBY_FREE_MIN)
关于CFLAGS调整:
由于我使用的是ruby标准版,没有使用rvm,所以没有再优化Processor-specific CFLAGS,因为默认使用的就是O3,如果使用rvm可以参考 Is Your Application Running with Ruby – Slow? 这篇文章进行优化调整,Gentoo Wiki有介绍如何针对自己的
处理器进行优化设置的文章:http://en.gentoo-wiki.com/wiki/Safe_Cflags,
Intel CPU的具体优化方案可以直接参考这里http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel
补充:加入tcmalloc
安装了gperftools-2.0
export LD_PRELOAD=/usr/local/lib/libtcmalloc_minimal.so
性能又能有5%左右的提升