From 709e0ecbda73ec5b6b16ea07383e68f0a58fedc5 Mon Sep 17 00:00:00 2001 From: normal Date: Wed, 11 Feb 2015 19:04:16 +0000 Subject: set: speed up Set#include? * lib/set.rb (initialize): internal hash defaults to false * lib/set.rb (include?): use Hash#[] for optimized dispatch. Patch by Ismael Abreu [ruby-core:67664] [Misc #10754] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49568 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ lib/set.rb | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8dc4e5b36f..7849662b2a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Thu Feb 12 03:28:05 2015 Eric Wong + + * lib/set.rb (initialize): internal hash defaults to false + + * lib/set.rb (include?): use Hash#[] for optimized dispatch. + Patch by Ismael Abreu + [ruby-core:67664] [Misc #10754] + Wed Feb 11 11:09:52 2015 Nobuyoshi Nakada * ext/digest/digest_conf.rb (digest_conf): check for CommonDigest. diff --git a/lib/set.rb b/lib/set.rb index f00cfac0c5..a3f185538f 100644 --- a/lib/set.rb +++ b/lib/set.rb @@ -78,7 +78,7 @@ class Set # If a block is given, the elements of enum are preprocessed by the # given block. def initialize(enum = nil, &block) # :yields: o - @hash ||= Hash.new + @hash ||= Hash.new(false) enum.nil? and return @@ -209,7 +209,7 @@ class Set # Returns true if the set contains the given object. def include?(o) - @hash.include?(o) + @hash[o] end alias member? include? -- cgit v1.2.3