| 出力コード | |||||
|---|---|---|---|---|---|
| sjis | euc | jis | utf8 | ||
| 入力コード | sjis | 2 | 19 | 29 | 54 |
| euc | 19 | 2 | 14 | 39 | |
| jis | 30?31 | 15?16 | 2?3 | 49 | |
| utf8 | 64 | 49 | 60 | 2?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);
}
