大家好!好消息是Ruby 2.2预览版1已经发布了!我对增量 GC和符号 GC非常好奇,所以让我们在一个普通的 Rails API 应用程序上快速运行一些 Rails 基准测试。
首先,让我们通过RVM安装预览版:
rvm install ruby-2.2.0-preview1
在摆弄了大约五分钟,试图找到一个应用程序的一部分,在预览下不会失败,我停在简单的/profiles 端点,只是渲染所有配置文件的JSON,确实相当简单。使用可靠的werk,我启动了一个快速的工作台:
wrk -t10 -c10 -d20s http://localhost:8080/profiles
结果如下:
Ruby 2.1.2p95
Running 20s test @ http://localhost:8080/profiles
10 threads and 10 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 255.02ms 25.10ms 372.80ms 67.61%
Req/Sec 3.21 0.70 5.00 71.13%
771 requests in 20.01s, 4.40MB read
Requests/sec: 38.53
Transfer/sec: 225.31KB
------------------------------
50%,252 ms
90%,285 ms
99%,328 ms
99.999%,372 ms
Ruby 2.2.0preview1
Running 20s test @ http://localhost:8080/profiles
10 threads and 10 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 253.27ms 30.64ms 344.75ms 64.21%
Req/Sec 3.34 0.70 5.00 89.63%
786 requests in 20.02s, 4.49MB read
Requests/sec: 39.26
Transfer/sec: 229.60KB
------------------------------
50%,251 ms
90%,291 ms
99%,329 ms
99.999%,344 ms
我不确定我是否应该解释这些结果,但似乎在预览版下我们有轻微的改进,但在误差范围内。在这一点上,我不认为这是预览版的最佳基准,因为我们不使用视图,因此Rails不会因为字符串而占用内存。
在内存使用方面,我们有65M对75M(预览版对2.1版),所以在这种情况下,我们显然有一个赢家。
注:这是在工作完成后用OSX的Activity Monitor测量的,是独角兽工作者的平均尺寸。
问题
捆绑器和所有宝石的安装没有问题,但在某些情况下,我得到了无声的失败。基准测试是在一个实际工作/生产的Rails 4.0.x应用程序上进行的,其中有大约25个宝石。尽管如此,所有的宝石都安装好了,我可以用unicorn启动Rails,并对较简单的端点进行基准测试,这很不错。
总结
待定--这是一项正在进行的工作,我将用更多的信息来更新它。