1行スクリプトでの結果が以下。
$ time perl -le 'for(1..10000000){$s="";$s.="Fizz" if !($_%3);$s.="Bizz" if !($_%5);$s=$_ if !$s;print $s}' | tail 9999991 9999992 Fizz 9999994 Bizz Fizz 9999997 9999998 Fizz Bizz real 0m18.600s user 0m18.269s sys 0m0.252s
ルックアップテーブルを使った場合の結果が以下。ルックアップテーブルのおかげでmod計算の回数は減っているけど、総時間は増える。
$ cat fizz_buzz.pl #!/usr/bin/perl -l use strict; use warnings; my @s = ('FizzBizz', '', '', 'Fizz', '', 'Buzz', 'Fizz', '', '', 'Fizz', 'Buzz', '', 'Fizz', '', '', ''); my $n = 0; for (0..10000000) { my $s = $s[$_ % 15]; print $s?$s:$n; $n++; } $ time perl fizz_buzz.pl | tail 9999991 9999992 Fizz 9999994 Buzz Fizz 9999997 9999998 Fizz Buzz real 0m25.117s user 0m24.918s sys 0m0.196s