スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告 

【Ruby】SetとArrayのパフォーマンス比較

要素がユニークな配列を作る時Arrayのuniqを使うと思いますが、RubyにはSetというクラスがあります。



こんな感じでrequireして上げると使えます。
試しに1000000回ループして99個の要素を作る場合のコードでパフォーマンスの違いを見てみます。

ループ内で常に要素をユニークに保って起きたいケース




そうするとこんな結果が得られます。

user system total real
0.230000 0.000000 0.230000 ( 0.234813)
30.850000 0.150000 31.000000 ( 31.274483)

このコードの場合のようにループ内で常に配列をユニークに保って起きたいという場合にはSetの方がArrayに比べてはるかに優秀に見えますね。

ループ処理後に要素をユニークにしたいケース




こうすると

user system total real
0.240000 0.000000 0.240000 ( 0.245976)
0.190000 0.010000 0.200000 ( 0.190087)

このような結果が得られます。

ループ内ではユニークに保たなくていいけど、ループ処理が終わった時に始めてユニークにしたい場合はArrayに軍配のようです。

まとめ


SetとArrayのパフォーマンス比較はループ内で要素が常にユニークな状態で保ちたい場合はSetを使うでループ処理が終わったあとでユニークにすれば十分な場合はArrayを使う
という感じでしょうか
スポンサーサイト

Tag:Ruby  Trackback:0 comment:0 

Comment

comment form
(編集・削除用):
管理者にだけ表示を許可
プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。