Slower than Ruby 1.9, Rubinius for select String#unpack results
---------------------------------------------------------------
Key: JRUBY-5621
URL: http://jira.codehaus.org/browse/JRUBY-5621
Project: JRuby
Issue Type: Improvement
Components: Performance
Affects Versions: JRuby 1.6
Reporter: Charles Oliver Nutter
We are fastest on String#unpack for most results, but a few specific ones are
slower than either 1.9 or Rubinius.
Here's results for all three based on the benchmarks in Rubinius's suite:
{noformat}
~/projects/rubinius ➔ jruby --server -I benchmark/lib/
benchmark/core/string/bench_unpack.rb
string unpack @* 2954261.4 (±12.1%) i/s - 14252964 in 4.950668s
(cycle=22732)
string unpack A* 1874260.4 (±13.7%) i/s - 9116352 in 4.993779s
(cycle=29988)
string unpack B* 1845823.7 (±2.5%) i/s - 9190970 in 4.982551s
(cycle=22417)
string unpack b* 1760285.5 (±7.5%) i/s - 8743950 in 5.006990s
(cycle=38862)
string unpack C* 1219630.7 (±23.5%) i/s - 5658219 in 5.009728s
(cycle=34713)
string unpack c* 1691418.7 (±10.6%) i/s - 8323263 in 4.987737s
(cycle=27837)
string unpack E* 2377683.4 (±13.4%) i/s - 11602525 in 4.992931s
(cycle=34025)
string unpack e* 2128774.6 (±17.7%) i/s - 10162296 in 4.999965s
(cycle=36424)
string unpack F* 2261388.3 (±11.4%) i/s - 11106072 in 4.989234s
(cycle=34278)
string unpack f* 2056478.3 (±15.4%) i/s - 9944730 in 4.998399s
(cycle=35265)
string unpack G* 2247222.2 (±18.8%) i/s - 10357480 in 5.079501s
(cycle=36470)
string unpack g* 1844503.2 (±18.7%) i/s - 8723274 in 4.988684s
(cycle=29671)
string unpack H* 2213835.1 (±9.5%) i/s - 10927780 in 4.997926s
(cycle=32915)
string unpack h* 1946836.4 (±12.0%) i/s - 9511776 in 4.992093s
(cycle=29088)
string unpack I* 2038903.5 (±24.6%) i/s - 9280040 in 5.080328s
(cycle=36680)
string unpack i* 2504587.8 (±3.4%) i/s - 12470556 in 4.985348s
(cycle=33523)
string unpack L* 2230028.7 (±17.3%) i/s - 10643895 in 4.999535s
(cycle=36081)
string unpack l* 2009144.3 (±19.4%) i/s - 9509790 in 4.990518s
(cycle=35886)
string unpack M* 1555514.6 (±8.3%) i/s - 7719292 in 5.010518s
(cycle=32434)
string unpack m* 1842944.8 (±27.2%) i/s - 8170800 in 5.008332s
(cycle=34045)
string unpack N* 1900883.3 (±17.9%) i/s - 9073032 in 4.987707s
(cycle=29944)
string unpack n* 2039130.8 (±14.2%) i/s - 9896030 in 4.992591s
(cycle=32446)
string unpack Q* 828886.7 (±1.9%) i/s - 4140236 in 4.996691s
(cycle=23932)
string unpack q* 2001000.9 (±18.1%) i/s - 9243612 in 4.996399s
(cycle=36681)
string unpack S* 1770961.0 (±2.2%) i/s - 8838912 in 4.993620s
(cycle=32496)
string unpack s* 1753344.2 (±17.0%) i/s - 8422250 in 5.004650s
(cycle=33689)
string unpack U* 1661570.8 (±2.8%) i/s - 8298381 in 4.998487s
(cycle=30397)
string unpack V* 2316742.8 (±27.5%) i/s - 9953301 in 4.999669s
(cycle=35421)
string unpack v* 1764401.8 (±2.7%) i/s - 8802189 in 4.992633s
(cycle=32967)
string unpack w* 463732.2 (±1.1%) i/s - 2334562 in 5.034858s
(cycle=21418)
string unpack Z* 2157403.5 (±5.5%) i/s - 10733646 in 5.002923s
(cycle=36509)
~/projects/rubinius ➔ ruby1.9 -I benchmark/lib/
benchmark/core/string/bench_unpack.rb
string unpack @* 1965810.0 (±7.9%) i/s - 9786985 in 5.015848s
(cycle=44285)
string unpack A* 1392224.6 (±5.4%) i/s - 6958086 in 5.012022s
(cycle=39989)
string unpack B* 912818.3 (±3.5%) i/s - 4562184 in 5.004101s
(cycle=34562)
string unpack b* 851300.2 (±15.6%) i/s - 4089840 in 5.062876s
(cycle=34082)
string unpack C* 952789.3 (±6.8%) i/s - 4765320 in 5.026512s
(cycle=34038)
string unpack c* 954255.1 (±7.6%) i/s - 4779984 in 5.038315s
(cycle=36212)
string unpack E* 1439471.8 (±4.2%) i/s - 7222152 in 5.026613s
(cycle=42989)
string unpack e* 1120600.5 (±5.4%) i/s - 5609685 in 5.020971s
(cycle=39785)
string unpack F* 1121132.9 (±5.2%) i/s - 5603815 in 5.012590s
(cycle=38647)
string unpack f* 1117793.7 (±4.9%) i/s - 5613120 in 5.033978s
(cycle=38980)
string unpack G* 1432808.2 (±3.9%) i/s - 7189260 in 5.025676s
(cycle=42540)
string unpack g* 1049162.0 (±4.7%) i/s - 5241894 in 5.007863s
(cycle=38262)
string unpack H* 1232890.8 (±19.2%) i/s - 5517720 in 5.006530s
(cycle=40872)
string unpack h* 1338014.3 (±7.1%) i/s - 6663186 in 5.014254s
(cycle=38966)
string unpack I* 1825338.4 (±6.3%) i/s - 9086004 in 4.998433s
(cycle=45204)
string unpack i* 1832283.0 (±5.9%) i/s - 9128445 in 5.000295s
(cycle=44529)
string unpack L* 1775121.3 (±11.2%) i/s - 8677056 in 5.001303s
(cycle=45193)
string unpack l* 1832273.4 (±5.6%) i/s - 9136718 in 5.002833s
(cycle=44353)
string unpack M* 1319573.4 (±3.9%) i/s - 6606522 in 5.013780s
(cycle=40781)
string unpack m* 1025278.3 (±6.9%) i/s - 5091264 in 5.000878s
(cycle=35356)
string unpack N* 1769005.4 (±12.6%) i/s - 8672770 in 5.096087s
(cycle=44705)
string unpack n* 1033523.5 (±7.4%) i/s - 5168256 in 5.023747s
(cycle=30048)
string unpack Q* 1388404.5 (±3.9%) i/s - 6946238 in 5.010584s
(cycle=41102)
string unpack q* 1810819.8 (±6.9%) i/s - 9043136 in 5.019791s
(cycle=44768)
string unpack S* 1033950.6 (±8.1%) i/s - 5159820 in 5.022367s
(cycle=37390)
string unpack s* 1034262.0 (±8.2%) i/s - 5152754 in 5.016546s
(cycle=36287)
string unpack U* 974896.2 (±9.5%) i/s - 4834278 in 5.009431s
(cycle=35031)
string unpack V* 1827094.5 (±5.6%) i/s - 9124770 in 5.010848s
(cycle=44295)
string unpack v* 1039977.0 (±8.2%) i/s - 5179860 in 5.014029s
(cycle=36999)
string unpack w* 377163.6 (±4.6%) i/s - 1900506 in 5.049947s
(cycle=21354)
string unpack Z* 1380516.9 (±5.1%) i/s - 6889932 in 5.003162s
(cycle=40292)
~/projects/rubinius ➔ bin/rbx -I benchmark/lib/
benchmark/core/string/bench_unpack.rb
string unpack @* 2606154.3 (±0.9%) i/s - 12989863 in 4.984703s
(cycle=35983)
string unpack A* 1884009.6 (±3.0%) i/s - 9406130 in 4.997398s
(cycle=28078)
string unpack B* 1475351.9 (±3.8%) i/s - 7359744 in 4.997298s
(cycle=33152)
string unpack b* 1414095.0 (±4.4%) i/s - 7039951 in 4.993577s
(cycle=31013)
string unpack C* 1376045.9 (±1.3%) i/s - 6877073 in 4.998581s
(cycle=34909)
string unpack c* 1340153.2 (±4.3%) i/s - 6662700 in 4.986458s
(cycle=33650)
string unpack E* 2188220.1 (±2.8%) i/s - 10923981 in 4.996529s
(cycle=35583)
string unpack e* 1804429.4 (±3.5%) i/s - 8990888 in 4.989446s
(cycle=34984)
string unpack F* 1874232.8 (±9.7%) i/s - 9235350 in 4.993745s
(cycle=34205)
string unpack f* 1949979.8 (±3.7%) i/s - 9719332 in 4.991900s
(cycle=34223)
string unpack G* 2127909.9 (±3.8%) i/s - 10593649 in 4.986403s
(cycle=34507)
string unpack g* 1569167.4 (±16.6%) i/s - 7259253 in 4.988924s
(cycle=34081)
string unpack H* 1543582.0 (±4.6%) i/s - 7689066 in 4.994166s
(cycle=32307)
string unpack h* 1736990.5 (±2.0%) i/s - 8664832 in 4.990672s
(cycle=31856)
string unpack I* 2226063.0 (±0.9%) i/s - 11119191 in 4.995431s
(cycle=36697)
string unpack i* 2212025.1 (±0.9%) i/s - 11063387 in 5.001842s
(cycle=37759)
string unpack L* 2190515.0 (±0.8%) i/s - 10945269 in 4.997023s
(cycle=36123)
string unpack l* 2181140.0 (±1.0%) i/s - 10907819 in 5.001458s
(cycle=36481)
string unpack M* 1699922.9 (±1.1%) i/s - 8494040 in 4.997344s
(cycle=32420)
string unpack m* 1857496.3 (±1.8%) i/s - 9283680 in 4.999748s
(cycle=32235)
string unpack N* 2209939.9 (±1.2%) i/s - 11034288 in 4.993775s
(cycle=37278)
string unpack n* 1809322.8 (±2.4%) i/s - 9038380 in 4.998682s
(cycle=34763)
string unpack Q* 617391.6 (±10.0%) i/s - 3045870 in 4.988910s
(cycle=22562)
string unpack q* 2220877.7 (±0.9%) i/s - 11083072 in 4.990770s
(cycle=35984)
string unpack S* 1719627.8 (±13.3%) i/s - 8124536 in 5.047334s
(cycle=34426)
string unpack s* 1797249.1 (±2.1%) i/s - 8977360 in 4.997419s
(cycle=32062)
string unpack U* 1565410.2 (±1.9%) i/s - 7829556 in 5.003418s
(cycle=31444)
string unpack V* 2197583.4 (±0.9%) i/s - 10959652 in 4.987553s
(cycle=33011)
string unpack v* 1716471.7 (±1.6%) i/s - 8562390 in 4.989719s
(cycle=33578)
string unpack w* 417229.3 (±1.6%) i/s - 2083024 in 4.993914s
(cycle=20624)
string unpack Z* 1955882.3 (±2.4%) i/s - 9771994 in 4.999457s
(cycle=31121)
{noformat}
Almost all are faster on JRuby than either Ruby 1.9 or Rubinius. Ruby 1.9 is
faster on at least Q, and while Rubinius results are much closer to JRuby there
are a few that are faster.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email