fastruby / fastruby/fast-ruby

String concat contains dummy comparision.

Open
#158 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
Ruby
Stars
5.7k
Forks
371
PR merge metrics
No merged PRs in 30d

Description

You are doing your test without any randomization and length variety, so results are incorrect completely.

You simply just testing how fast are 'foo' and 'bar' concatenation, and only

Live case scenario looks more like this:

# strings length is a ( 100 + rand( 100 ) ), i.e. short strings max difference around double

String#append: 439150.7 i/s
String#+: 419672.1 i/s - same-ish: difference falls within error
"#{'foo'}#{'bar'}": 365799.6 i/s - 1.20x slower
String#concat: 353912.5 i/s - 1.24x slower

# strings length is a (1000 + rand( 1000) ) , i.e. longer strings max difference around double

String#+: 298633.5 i/s
String#append: 284566.8 i/s - same-ish: difference falls within error
"#{'foo'}#{'bar'}": 267548.4 i/s - 1.12x slower
String#concat: 215419.4 i/s - 1.39x slower

# string length is a ( 100 + rand(1000) ), i.e. highly variable length
String#+: 388205.2 i/s
String#append: 357669.3 i/s - 1.09x slower
"#{'foo'}#{'bar'}": 331617.7 i/s - 1.17x slower
String#concat: 286717.8 i/s - 1.35x slower

# string length is a 1 + rand 1000, i.e. random string
String#+: 385180.8 i/s
String#append: 373926.8 i/s - same-ish: difference falls within error
"#{'foo'}#{'bar'}": 341496.6 i/s - 1.13x slower
String#concat: 297988.1 i/s - 1.29x slower

OK

# This is completely oposite to
"foo" "bar": 5369594.5 i/s
"#{'foo'}#{'bar'}": 5181745.7 i/s - same-ish: difference falls within error
String#append: 3075719.2 i/s - 1.75x slower
String#concat: 3016703.5 i/s - 1.78x slower
String#+: 2977282.7 i/s - 1.80x slower

Also you didn't test on multiple string concat, where actually "#{'foo'} #{'bar'} #{'shines'}".

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.