Mixed perf on String#to_i versus Ruby 1.9 and Rubinius
------------------------------------------------------
Key: JRUBY-5620
URL: http://jira.codehaus.org/browse/JRUBY-5620
Project: JRuby
Issue Type: Improvement
Components: Performance
Affects Versions: JRuby 1.6
Reporter: Charles Oliver Nutter
Another case where we are comparing 100% "native" impls, this time with
String#to_i.
Results are mixed; we are all fastest on something. The best of all worlds will
make someone fastest on all.
{noformat}
~/projects/rubinius ➔ jruby --server -I benchmark/lib/
benchmark/core/string/bench_to_i.rb
#to_i with an integer in a string
7633077.1 (±7.4%) i/s - 37354603 in 4.934960s
(cycle=29623)
#to_i with a float in a string
6733175.0 (±4.9%) i/s - 33241488 in 4.954528s
(cycle=31242)
#to_i with an empty string
11830673.8 (±5.1%) i/s - 58289616 in 4.942069s
(cycle=47313)
#to_i with an integer and extra text
3821345.2 (±5.7%) i/s - 18957678 in 4.981885s
(cycle=41757)
~/projects/rubinius ➔ ruby1.9 -I benchmark/lib/
benchmark/core/string/bench_to_i.rb
#to_i with an integer in a string
7261663.4 (±1.5%) i/s - 36318960 in 5.002643s
(cycle=55280)
#to_i with a float in a string
7046664.4 (±1.6%) i/s - 35246844 in 5.003213s
(cycle=59139)
#to_i with an empty string
9097651.9 (±1.6%) i/s - 45490088 in 5.001590s
(cycle=59542)
#to_i with an integer and extra text
3204945.1 (±9.6%) i/s - 15882468 in 5.002829s
(cycle=54022)
~/projects/rubinius ➔ bin/rbx -I benchmark/lib/
benchmark/core/string/bench_to_i.rb
#to_i with an integer in a string
7926463.3 (±3.7%) i/s - 39419937 in 4.983585s
(cycle=38761)
#to_i with a float in a string
7818289.9 (±1.9%) i/s - 38956995 in 4.984837s
(cycle=33729)
#to_i with an empty string
7941361.7 (±4.5%) i/s - 39475787 in 4.987574s
(cycle=42769)
#to_i with an integer and extra text
7955217.3 (±2.2%) i/s - 39643632 in 4.987127s
(cycle=42264)
{noformat}
Here's the bench from Rubinius's suite:
{noformat}
require 'benchmark'
require 'benchmark/ips'
Benchmark.ips do |x|
int = "5"
float = "5.0"
empty = ""
with_extra_text = "5 and some extra characters"
x.report "#to_i with an integer in a string" do |times|
i = 0
while i < times
int.to_i
i += 1
end
end
x.report "#to_i with a float in a string" do |times|
i = 0
while i < times
float.to_i
i += 1
end
end
x.report "#to_i with an empty string" do |times|
i = 0
while i < times
empty.to_i
i += 1
end
end
x.report "#to_i with an integer and extra text" do |times|
i = 0
while i < times
with_extra_text.to_i
i += 1
end
end
end
{noformat}
--
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