2012年8月21日火曜日

perl の print 文の書き方による効率の違い

おそらくは、perl に造詣の深い方には当たり前レベルかもしれませんが、print 文でいくつかの変数を出力する際に、カンマ(,)で区切ると若干効率が悪いようです。
#!/usr/bin/perl

$j = 0 ;
for ($i = 0; $i < 1000000; $i++) {
        $a = $j++ ;
        $b = $j++ ;
        $c = $j++ ;
        $d = $j++ ;

        print $a, $b, $c, $d, "\n" ;
}
と書くよりも、
#!/usr/bin/perl

$j = 0 ;
for ($i = 0; $i < 1000000; $i++) {
        $a = $j++ ;
        $b = $j++ ;
        $c = $j++ ;
        $d = $j++ ;

        print "$a$b$c$d\n" ;
}
としたほうが効率が良いです。
# diff -u perf_joint.pl perf_joint2.pl 
--- perf_joint.pl       2012-08-21 00:17:46.000000000 +0900
+++ perf_joint2.pl      2012-08-21 00:18:16.000000000 +0900
@@ -7,5 +7,5 @@
        $c = $j++ ;
        $d = $j++ ;
 
-       print $a, $b, $c, $d, "\n" ;
+       print "$a$b$c$d\n" ;
 }
# time ./perf_joint.pl | md5sum
8a80cd09e1b5bcad31bdf23d5738c21a  -

real    0m2.224s
user    0m0.230s
sys     0m1.990s
# time ./perf_joint2.pl | md5sum
8a80cd09e1b5bcad31bdf23d5738c21a  -

real    0m1.210s
user    0m0.050s
sys     0m1.160s
些細なことではありますが、チリも積もればという局面もあろうかと思います。

0 件のコメント:

コメントを投稿

人気ブログランキングへ にほんブログ村 IT技術ブログへ