漢字コードの変換にかかった時間(単位:秒)
| 入力コード |
出力コード |
sjis |
euc |
jis |
utf8 |
| sjis |
|
2.57 |
19.39 |
29.82 |
53.11 |
| euc |
|
19.06 |
2.49 |
14.39 |
39.39 |
| jis |
|
29.94 |
15.21 |
2.58 |
49.59 |
| utf8 |
|
65.41 |
50.92 |
60.75 |
2.58 |
今回もサンプルの実行はありません。
ミリ秒単位での速度比較の方法を知ったので、もう一度試してみました。ミリ秒単位だと、データとしてもそれっぽいです。
「jis」から「sjis」「euc」への変換は、逆の場合とそれほど変わらないみたいです。どうやら、前回は嘘を書いていたようです (^^;;;
しかし、測定のタイミングなのか「誤差」が結構あります。仕方の無い事なのでしょうか・・・。
今回使ったのは「Benchmark」というライブラリ(パッケージ?)で「ActivePerl519」に入っていました。とはいえ、その存在を知ったのは、とほほさんの「ラウンジ」なんですけど・・・。
他にも「times」という関数(?)で実行時間(?)が「ミリ秒」単位で取得できるようです。ただ、スクリプトの最初に書くと普段は「0000」なのですが、時々「0.05」などと言われる事があるので、どの瞬間からの時間なのかはよくわかりません。
ただ、便利なのは便利です。「time」で引き算をしても「0秒」ばかりだったので・・・。
そういえば、前回はわざわざ時刻に変換して計算をしていたけど、「time」は「グリニッジ標準時の1970年1月1日0時0分0秒」からの秒数を返すので、変換せずにそのまま引き算をすれば簡単に答えが出ていた・・・。「time」も計算できる事に何故気づかなかったのか(笑)
掲示板を作るために色々なスクリプトを参考していると、「なるほど」な事がたくさんあった。やはり「作る過程で習得する」のが性にあっているらしい。
ソースコード
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
42
43
44
45
46
47
|
#!/usr/bin/perl
use Benchmark;
use Jcode;
$count = 50000;
$icode = 'sjis';
# $icode = 'euc';
# $icode = 'jis';
# $icode = 'utf8';
$japanese = 'あいうえお阿衣兎得緒';
&Jcode::convert($japanese, $icode);
print "Content-type: text/html\n\n";
print "<html><head><title></title></head>\n";
print "<body>\n";
print "<pre>\n";
@t = timethese($count, {
'to_SJIS' => '&to_sjis;',
'to_EUC' => '&to_euc;',
'to_JIS' => '&to_jis;',
# 'to_UTF8' => '&to_utf8;'
});
print "</pre>\n";
print "</body></html>\n";
exit(0);
sub to_sjis {
&Jcode::convert($japanese, 'sjis', $icode);
}
sub to_euc {
&Jcode::convert($japanese, 'euc', $icode);
}
sub to_jis {
&Jcode::convert($japanese, 'jis', $icode);
}
sub to_utf8 {
&Jcode::convert($japanese, 'utf8', $icode);
}
|