Project

General

Profile

Actions

Bug #736

closed

Range#include? が遅い

Added by rubikitch (rubikitch .) over 16 years ago. Updated over 12 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
Backport:

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

Actions #1

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 ." writes:

|Ruby 1.9でRange#include?がものすごい遅いようです。

1.9ではinclude?はその値がeachされる要素に含まれるかどうかを
チェックするようになりました。これは一般に大小関係の比較(1.8
での比較)よりもものすごい遅いのは仕方がないと思います。

  • between?
  • cover? (新設)

を使ってください。

=end

Actions #2

Updated by matz (Yukihiro Matsumoto) over 16 years ago

  • Status changed from Open to Closed

=begin

=end

Actions #3

Updated by sorah (Sorah Fukumori) over 12 years ago

  • File deleted (QQ截图20120504205156.png)
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0