--------_3E55E243F23702FA2C40_MULTIPART_MIXED_
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit
I wrote faster extension 'hashsucc.so'.
glib is not needed.
Install:
$ ruby extconf.rb
$ make
% make install
Usage:
h ash.new(0)
h.succ! key # equivalent h[key]+ h.succ! %w(foo bar baz) # equivalent
# %w(foo bar baz).each do |key|
# h[key]+ # end
<----- b_orig.rb ---- original code ------------------->
50_000.times do
h ash.new(0)
for tok in %w{a b c a g d e f a g h g i j e e k l m g d d a b c}
h[tok] +
end
end
<----- b_filter.rb ---- Filter.so ------------------->
require "Filter"
50_000.times do
h ilter.process %w{a b c a g d e f a g h g i j e e k l m g d d a b c}
end
<----- b_hashsucc.rb ---- hashsucc.so ------------------->
require "hashsucc"
50_000.times do
Hash.new.succ! %w{a b c a g d e f a g h g i j e e k l m g d d a b c}
end
<----------------------------->
Results:
$ time ruby b_orig.rb
ruby b_orig.rb 12.46s user 0.01s system 100% cpu 12.467 total
$ time ruby b_filter.rb
ruby b_filter.rb 8.29s user 0.12s system 100% cpu 8.402 total
$ time ruby b_hashsucc.rb
ruby b_hashsucc.rb 5.00s user 0.01s system 100% cpu 5.004 total
--
MoonWolf <moonwolf / moonwolf.com>
--------_3E55E243F23702FA2C40_MULTIPART_MIXED_
Content-Type: application/octet-stream; name="extconf.rb"
Content-Disposition: attachment;
filenameョ「
テュヤュナコ カエ
ノナリホフイルイニフイハケラハオノテアフレリニアリハノテハイアノヒルウハルリメリイアイヨラ
ヒテハルリホウヨルノテュュュュュュュ゜ウナオオナイエウニイウキーイニチイテエー゜ヘユフヤノミチメヤ゜ヘノリナト゜
テュヤコ ッュサ ス「ョ「
テュトコ サ
ョ「
テュヤュナコ カエ
ノイルイアレヌユノハアルテノヒノイルイアレヌユノホーフテラムユヨメムルリホリウホアルイヘヌニテ
イヨオヒムノテチヨニヘヨユユヌニテイヨオマキテチヨニヘヨユユルリハオフテツイルラノヌケレヤヒノテツニケー
ルラハレモチヌハマノヌテツレラオヌノヌホラオーフテツレヘキテチテチイオノトーモユオユヘレハラテ
ヒヤヒノテツールミモツモモナニヤモテルリホヒモーォヌハマノチノネホウリメテユラヨツニヒヌモノネヒノテツ
ルリホノニメユアメモモユオネマノテチラルヒネホーリイイアテールノヌモハレテノネヒノテチノテチ
ルイケアムミモツヌモヨモユオユヒネレテキテチノテチノヌホラオーヒキテチノテチノネホーリイイヨテール
ノヌモモユオユヘレハラテウヨテマノテチモツネホノネヒノテチノテチウメルラメリイメヨテー
ルノネハリウホーケレリーヒヌモノヌケレモキテチノテツケテチルイニレモツユリーニモユニレマノテチルリハオ
ノトーイヨオマノテチヌヨレウメノトーユニモユニレヒヌニモミヒノテチノヌレレヘケヘトイレ
ノトヌヨレウメマツレヘヒノテチノテツレリミモツモムヨハモムヨルリハオヒモーォネメライケアーキテチ
ノテチノヌノテニケイケリチヌハフテツレリノテレイルラヒモツキテチノテチノテチルイケアムミモツヌモヨ
モユオユヒネレテキテチノテチノテチルイケアムヒヒノテチノテチノテツニケホムヌハフテツレリノナマ
ヨトハヌモヨルイケアムヒヤヒノテチノテチモツネホノネヒノテチノテチノテツニケレヌメレヌレラホーヒネメテ
ハウメリイオムイヨオヒモイオヒヤヒノテチノテチムノテチムノネーヒノテツレリメアエヌニトヒ
ムヒケレチハーリイイラホヒテヒノネハリイメレレヨケレリメイムハルーイノホア
ルイヘノヌニニケラホフテチヒヤヒムュュュュュュュ゜ウナオオナイエウニイウキーイニチイテエー゜ヘユフヤノミチメヤ゜ヘノリナト゜ュュ