Skip to content

Commit b485926

Browse files
committed
Update benchmark with String#casecmp? example
[`String#casecmp?`](https://ruby-doc.org/core-2.4.0/String.html#method-i-casecmp-3F) was introduced in Ruby 2.4
1 parent 38f49f9 commit b485926

File tree

2 files changed

+19
-10
lines changed

2 files changed

+19
-10
lines changed

README.md

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1064,22 +1064,26 @@ Comparison:
10641064
String#dup: 3566485.7 i/s - 2.16x slower
10651065
```
10661066

1067-
##### `String#casecmp` vs `String#downcase + ==` [code](code/string/casecmp-vs-downcase-==.rb)
1067+
##### `String#casecmp` vs `String#casecmp?` vs `String#downcase + ==` [code](code/string/casecmp-vs-downcase-==.rb)
1068+
1069+
`String#casecmp?` is available on Ruby 2.4 or later.
10681070

10691071
```
10701072
$ ruby -v code/string/casecmp-vs-downcase-\=\=.rb
1071-
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
1072-
1073+
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin19]
1074+
Warming up --------------------------------------
1075+
String#casecmp? 395.796k i/100ms
1076+
String#downcase + == 543.958k i/100ms
1077+
String#casecmp 730.028k i/100ms
10731078
Calculating -------------------------------------
1074-
String#downcase + == 101.900k i/100ms
1075-
String#casecmp 109.828k i/100ms
1076-
-------------------------------------------------
1077-
String#downcase + == 2.915M (± 5.4%) i/s - 14.572M
1078-
String#casecmp 3.708M (± 6.1%) i/s - 18.561M
1079+
String#casecmp? 3.687M (±10.9%) i/s - 18.602M in 5.158065s
1080+
String#downcase + == 5.017M (±11.3%) i/s - 25.022M in 5.089175s
1081+
String#casecmp 6.948M (± 6.0%) i/s - 35.041M in 5.062714s
10791082
10801083
Comparison:
1081-
String#casecmp: 3708258.7 i/s
1082-
String#downcase + ==: 2914767.7 i/s - 1.27x slower
1084+
String#casecmp: 6948231.0 i/s
1085+
String#downcase + ==: 5017089.5 i/s - 1.38x (± 0.00) slower
1086+
String#casecmp?: 3686650.7 i/s - 1.88x (± 0.00) slower
10831087
```
10841088

10851089
##### String Concatenation [code](code/string/concatenation.rb)

code/string/casecmp-vs-downcase-==.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
SLUG = 'ABCD'
44

5+
def slowest
6+
SLUG.casecmp?('abcd')
7+
end
8+
59
def slow
610
SLUG.downcase == 'abcd'
711
end
@@ -11,6 +15,7 @@ def fast
1115
end
1216

1317
Benchmark.ips do |x|
18+
x.report("String#casecmp?") { slowest } if RUBY_VERSION >= "2.4.0".freeze
1419
x.report('String#downcase + ==') { slow }
1520
x.report('String#casecmp') { fast }
1621
x.compare!

0 commit comments

Comments
 (0)