漢字コードの変換にかかった時間(単位:秒)
入力コード |
出力コード |
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);
}
|