2011年7月31日日曜日

開発環境

  • Mac OS X Snow Leopard (OS)
  • TextWrangler(Text Editor) (いずれはBBEditを入手したい!)
  • Script言語:Perl

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

 

2.

コード(TextWrangler)

#!/usr/bin/perl
use strict;
use warnings;
use Benchmark;

my @files = glob "/bin/*";

timethese(0,{
    # 標準のソート
 'Test1' => 'my @sorted_1 = '.
        'sort {-s $a <=> -s $b} @files;',
 # シュワルツ変換
 'Test2' => 'my @sorted_2 = '
      .'map $_->[0],'
      .'sort {$a->[1] <=> $b->[1]} '
      .'map[$_, -s $_], '
      .'@files;',
 });

入出力結果(Terminal)

ベンチマークのwallclockはTest1の方が速い、CPUの方はTest2の方が速くなってる。シュワルツ変換の方が速いからCPUの結果を重視すればいいのかな〜

0 コメント:

コメントを投稿