List::Utilで配列をシャッフルする
こないだ、List::Util
にshuffle
があるのを教えて貰ったので、
さっそく使ってみようと思う。(*1)
コードはこんな感じ。
use strict; use warnings; use v5.10; use List::Util qw/shuffle/; use Array::Shuffle qw/shuffle_array/; use Benchmark qw/cmpthese/; cmpthese( 5, { Array_Shuffle => sub { my @foo = 1..1_000_000; shuffle_array( @foo ); }, List_Util => sub { my @foo = shuffle( 1..1_000_000 ); } } );
実行結果はこんな感じ。
$ perl aaa.pl Rate List_Util Array_Shuffle List_Util 2.72/s -- -27% Array_Shuffle 3.70/s 36% --
コード書いてる時点で気付いたけど、
List::Util
の方は結果を受け取る分、ちょっと遅い。
でも現時点で、シャッフルする理由はソートの前準備だけなので、
CoreモジュールであるList::Util
の方を、積極的に使っていきたいと思う。
うーん、Array::Shuffle
を使った方が良いケースかー、
ちょっと、思い付かないですね。
ちりも積もれば何とかっていう環境では使われてるんですかね?
おしまい。
(*1) akiymさん++
Leave a Comment