1

我在使用的实现赛璐珞演员的库中看到了一些并发问题。出于好奇,我用几个不同的解释器在赛璐珞中运行了基准测试脚本。

红宝石 1.9.3

Calculating -------------------------------------
               spawn       387 i/100ms
               calls       757 i/100ms
         async calls       431 i/100ms
            messages      3063 i/100ms
-------------------------------------------------
               spawn     3957.4 (±3.9%) i/s -      20124 in   5.093148s
               calls     8054.8 (±5.8%) i/s -      40878 in   5.092786s
         async calls    15709.4 (±11.0%) i/s -      77580 in   5.008169s
            messages   497844.7 (±16.0%) i/s -    2383014 in   4.989021s

红宝石 2.1.1

Calculating -------------------------------------
               spawn       359 i/100ms
               calls       749 i/100ms
         async calls       383 i/100ms
            messages      3579 i/100ms
-------------------------------------------------
               spawn     3823.2 (±8.1%) i/s -      19027 in   5.011383s
               calls     8205.4 (±7.3%) i/s -      41195 in   5.049513s
         async calls    14086.1 (±8.7%) i/s -      70089 in   5.016073s
            messages   766163.5 (±19.8%) i/s -    3510999 in   4.993806s

JRuby 1.7.11 使用 JIT

Calculating -------------------------------------
               spawn        75 i/100ms
               calls       294 i/100ms
         async calls       154 i/100ms
            messages      4548 i/100ms
-------------------------------------------------
               spawn     2521.8 (±24.3%) i/s -      11625 in   4.999000s
               calls     8207.7 (±25.3%) i/s -      37632 in   5.049000s
         async calls     9001.3 (±30.2%) i/s -      36652 in   4.971000s
            messages   334366.4 (±14.7%) i/s -    1619088 in   4.999000s

使用 AOT 的 JRuby 1.7.11

Calculating -------------------------------------
               spawn        88 i/100ms
               calls       324 i/100ms
         async calls       126 i/100ms
            messages      2576 i/100ms
-------------------------------------------------
               spawn     2198.8 (±25.5%) i/s -       9416 in   5.004000s
               calls     6188.9 (±21.5%) i/s -      29160 in   5.014000s
         async calls     6906.6 (±26.3%) i/s -      29862 in   4.996000s
            messages   198558.0 (±20.3%) i/s -     922208 in   4.995000s

如果我没看错的话,1.9 和 2.1 解释器比在 JRuby 中运行时产生更多的演员。我本来预计 JRuby 会产生更多的演员并且比任何一个 C 解释器运行得更快——但事实似乎并非如此。

我运行基准测试的方式是否缺少某些东西,或者赛璐珞在启动大量演员方面是否存在一些困难?

编辑我最初使用错误的设置来编译 AOT。现在,AOT 的数字似乎更低——尽管除了编译之外我没有指定任何其他选项。

4

0 回答 0