2012年4月28日土曜日

開発環境

『続・初めてのPerl 改訂版』(Randal L. Schwartz, brian d foy, Tom Phoenix 著、伊藤 直也田中 慎司吉川 英興 監訳、株式会社ロングテール/長尾 高弘 訳、オライリー・ジャパン、2006年、ISBN4-87311-305-9) の9章(リファレンスを使った実践的なテクニック), 9.9(練習問題)2を解いてみる。

2.

やり方の1つ。(「やり方は何通りもある」(TIMTOWTDI(There Is More Than One Way To Do It.)))

コード(TextWrangler)

#!/usr/bin/env perl
use strict;
use warnings;
use Benchmark qw(timethese) ;

my @list = glob "/bin/*";
my $count = -5;
timethese($count, {
  '普通の変換    ' => 'sort { -s $a <=> -s $b} @list',
  'シュワルツ変換' => 'map $_->[0],
                    sort { $a->[1] <=> $b->[1] }
                    map [$_, -s $_],
                    @list;',
});

入出力結果(Terminal)

$ perl sample.pl
Benchmark: running シュワルツ変換, 普通の変換     for at least 5 CPU seconds...
シュワルツ変換:  4 wallclock secs ( 5.13 usr +  0.01 sys =  5.14 CPU) @ 5589859.92/s (n=28731880)
普通の変換    :  3 wallclock secs ( 5.04 usr +  0.02 sys =  5.06 CPU) @ 14013822.53/s (n=70909942)
$

0 コメント:

コメントを投稿