Patch #20369
Use String#casecmp for case insensitive comparison
Status: | Closed | Start date: | ||
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | - | % Done: | 0% | |
Category: | Code cleanup/refactoring | |||
Target version: | 3.2.0 |
Description
String#casecmp is faster than String#downcase. We can save some CPU cycles by replacing String#downcase with String#casecmp.
The following is a script to benchmark.
#!/usr/bin/env ruby
def measure(p)
t1 = Time.now
1000000.times {p.call}
t2 = Time.now
t2 - t1
end
str1 = (1..100).map {('A'..'z').to_a.sample}.join
str2 = str1.downcase
puts "String#casecmp : #{measure(->{ str1.casecmp(str2) == 0})} sec"
puts "String#downcase : #{measure(->{ str1.downcase == str2 })} sec"
Here is a result. casecmp is remarkably faster than downcase.
laphroaig:patches maeda$ ruby casecmp-vs-downcase.rb String#casecmp : 0.358929 sec String#downcase : 0.557218 sec
Related issues
Associated revisions
use String#casecmp for case insensitive comparison (#20369)
Contributed by Go MAEDA.
History
#1
Updated by Toshi MARUYAMA over 5 years ago
- Target version set to 3.2.0
#2
Updated by Go MAEDA over 5 years ago
- Related to Defect #20278: Wrong syntax for resizing inline images will throw a 500 error added
#3
Updated by Toshi MARUYAMA over 5 years ago
- Status changed from New to Closed
Committed in trunk r14484, thanks.
#4
Updated by Go MAEDA over 3 years ago
- Related to Defect #27780: Case-insensitive matching fails for Unicode filenames when referring to attachments in text formatting added