« ファイルのロック | メイン | 変換にかかる時間(その2) »

変換にかかる時間

漢字コードの変換にかかった時間(単位:秒)

出力コード
sjiseucjisutf8
入力コードsjis2192954
euc1921439
jis30?3115?162?349
utf86449602?3

今回はサンプルの実行はありません。

現時点では、perlでのミリ秒単位の時間取得方法を知らないので、秒単位の記録です。多少データとして出来過ぎな気もしますが、サンプル文字も適当なのであくまで参考ということで・・・。

入力と出力の漢字コードが同じ場合は、どのコードでもほぼ同じ時間で終了しています。全体的に見ると、「euc」が変換にかかる時間は短いようです。

「jis」からの変換では、「sjis」や「euc」からの変換よりも多少時間が必要なのかもしれません。何度やっても1,2秒は違います。何をしているのでしょう?

で、やはりというか「utf8」は時間がかかっています。そして逆の変換はさらに時間が必要です。最初は計算が違ったのかと思いましたが、10秒前後ずれます。どんな変換が必要なのでしょうか・・・?

「Jcode.pm」のソースを見てわかったのですが、「convert」で「入力コード」を指定しないときは「getcode」でコードを取得するようです。

それにしても、「Jcode.pm」のソースは何度見ても文法がさっぱりです。これが「perl5」の書き方なのでしょうか・・・。

ソースコード

#!/usr/bin/perl
 
# 初期設定
use Jcode;
$JcodeVer = "Jcode $Jcode::VERSION";
*Jgetcode = \&Jcode::getcode;
*Jconvert = \&Jcode::convert;
 
$G_myCode = &Jgetcode("漢字");
$G_code = "jis";
$G_charset = "iso-2022-jp";
 
{
    $icode = 'sjis';
#    $icode = 'euc';
#    $icode = 'jis';
#    $icode = 'utf8';
    $ocode = 'sjis';
#    $ocode = 'euc';
#    $ocode = 'jis';
#    $ocode = 'utf8';
    
    print("Content-type: text/html\n\n");
    $japanese = 'あいうえお阿衣兎得緒';
    $japanese = &Jconvert($japanese, $icode);
    print(&getTime);
    print(' : BeginTime ');
    print("<br>");
    for(1 .. 50000){
        &Jconvert($japanese, $ocode, $icode);
    }
    print(&getTime);
    print(' : EndTime');
    exit(0);
}
 
sub getTime{
    my ($sec,$min,$hour,$day,$mon,$year) = localtime(time);
    return sprintf("%4d/%02d/%02d %02d:%02d:%02d",
                $year+1900,$mon+1,$day,$hour,$min,$sec);
}

カテゴリ:

トラックバック

このエントリーのトラックバックURL:

同一カテゴリの最新記事

最近のエントリー

Amazon.co.jp

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type 3.36
Amazon.co.jp