Bug #736
closedRange#include? が遅い
Description
=begin
Ruby 1.9でRange#include?がものすごい遅いようです。
require 'benchmark'
RUBY_VERSION # => "1.8.7"
Benchmark.bmbm(10) do |b|
n = 100
b.report("include") { n.times{ ("an".."ruby").include? "elf" }}
b.report("between") { n.times{ "elf".between?("an","ruby") }}
end
>> Rehearsal ---------------------------------------------¶
>> include 0.000000 0.000000 0.000000 ( 0.000278)¶
>> between 0.000000 0.000000 0.000000 ( 0.000113)¶
>> ------------------------------------ total: 0.000000sec¶
>>¶
>> user system total real¶
>> include 0.000000 0.000000 0.000000 ( 0.000233)¶
>> between 0.000000 0.000000 0.000000 ( 0.000113)¶
require 'benchmark'
RUBY_VERSION # => "1.9.0"
Benchmark.bmbm(10) do |b|
n = 100
b.report("include") { n.times{ ("an".."ruby").include? "elf" }}
b.report("between") { n.times{ "elf".between?("an","ruby") }}
end
>> Rehearsal ---------------------------------------------¶
>> include 0.420000 0.000000 0.420000 ( 0.417621)¶
>> between 0.000000 0.000000 0.000000 ( 0.000116)¶
>> ------------------------------------ total: 0.420000sec¶
>>¶
>> user system total real¶
>> include 0.420000 0.000000 0.420000 ( 0.422576)¶
>> between 0.000000 0.000000 0.000000 ( 0.000120)¶
=end
Updated by matz (Yukihiro Matsumoto) over 16 years ago
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:37051] [Bug #736] Range#include? が遅い"
on Mon, 10 Nov 2008 05:41:10 +0900, "rubikitch ." [email protected] writes:
|Ruby 1.9でRange#include?がものすごい遅いようです。
1.9ではinclude?はその値がeachされる要素に含まれるかどうかを
チェックするようになりました。これは一般に大小関係の比較(1.8
での比較)よりもものすごい遅いのは仕方がないと思います。
- between?
- cover? (新設)
を使ってください。
=end
Updated by matz (Yukihiro Matsumoto) over 16 years ago
- Status changed from Open to Closed
=begin
=end
Updated by sorah (Sorah Fukumori) over 12 years ago
- File deleted (
QQ截图20120504205156.png)