Actions
Patch #20369
closedUse String#casecmp for case insensitive comparison
Start date:
Due date:
% Done:
0%
Estimated time:
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
Files
Related issues
Updated by Go MAEDA over 9 years ago
- Related to Defect #20278: Wrong syntax for resizing inline images will throw a 500 error added
Updated by Toshi MARUYAMA about 9 years ago
- Status changed from New to Closed
Committed in trunk r14484, thanks.
Updated by Go MAEDA almost 7 years ago
- Related to Defect #27780: Case-insensitive matching fails for Unicode filenames when referring to attachments in text formatting added
Actions