変換にかかる時間

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

入力コード 出力コード sjis euc jis utf8
sjis 2 19 29 54
euc 19 2 14 39
jis 31 16 3 49
utf8 64 49 60 3

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

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

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

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

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

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

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

ソースコード

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/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);
}
comments powered by Disqus
Hugo で構築されています。
テーマ StackJimmy によって設計されています。