おそらくは、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 件のコメント:
コメントを投稿