continue構文とやらを使ってみた

2009年2月21日
| コメント(0) | トラックバック(0) continue構文とやらを使ってみた

メールマガジンの「Perlで書く」を読んでいたら、なんとなく試してみたくなったので、実行してみた。
continue構文は使ったことない。
使いどころがわからないというか、意識したこともなかった。

参考

ついでに、普通だったらこう書くよね、という感じのforeachも入れてベンチマークをとってみた。

結果

                      Rate sub_while_continue         sub_for sub_foreach_normal
sub_while_continue 75245/s                 --             -1%                -9%
sub_for            76220/s                 1%              --                -8%
sub_foreach_normal 83126/s                10%              9%                 --

結果はforeachがやはり速い。
foreach以外はループするかどうかの判断をしている分、遅くなるのはしょうがないのだろう。

ベンチマークコードは以下のとおり。

ベンチマークコード

#!/usr/bin/perl
#utf8
 
use strict;
use warnings;
 
use Benchmark qw(:all);
use Perl6::Say;
 
sub confirm ($) {
#    say shift;
}
 
cmpthese( 100000, {
    sub_foreach_normal => sub {
        my $sum = 0;
        foreach my $i (1 .. 100) {
            $sum += $i;
        }
        confirm $sum;
    },
    sub_while_continue => sub {
        my $sum = 0;
        my $i = 1;
        while ($i < 101) {
            $sum += $i;
        }
        continue {
            $i++;
        }
        confirm $sum;
    },
    sub_for => sub {
        my $sum = 0;
        for (my $i = 1; $i < 101; $i++) {
            $sum += $i;
        }
        confirm $sum;
    },
});

トラックバック(0)

このブログ記事に対するトラックバックURL:

コメントする

Google検索

Last.fm

このブログ記事について

このページは、のぶりんが2009年2月21日 00:23に書いたブログ記事です。

ひとつ前のブログ記事は「「use MooseX::AttributeHelpers」が抜けているとわけがわからないエラーになる件」です。

次のブログ記事は「CPAN よく使われるネーム王選手権」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Creative Commons License
このブログのライセンスは クリエイティブ・コモンズライセンス.
Powered by Movable Type