fastruby / fastruby/fast-ruby

String concat contains dummy comparision.

Abierto
#158 4 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Ruby
Estrellas
5.7k
Forks
371
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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'}".

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.