Folks, I wrote a quick and dirty benchmark code to test various encodings. The result was amasing. I compared Encode::JP and Encode::Tcl and found Encode::Tcl is some 1000 times slower! Encode::Tcl appears so slow that I don't even want to try more than 10 counts. This script will be included in the next batch (unless jhi choose to do so in the next breadperl).
Dan > perl5.7.2 t/benchmark.pl JP 1000 Benchmark: timing 1000 iterations of JP decode(7bit-jis), JP decode(euc-jp), JP encode(7bit-jis), JP encode(euc-jp)... JP decode(7bit-jis): 14 wallclock secs (13.44 usr + 0.00 sys = 13.44 CPU) @ 74.42/s (n=1000) JP decode(euc-jp): 2 wallclock secs ( 2.39 usr + 0.00 sys = 2.39 CPU) @ 418.30/s (n=1000) JP encode(7bit-jis): 18 wallclock secs (17.55 usr + 0.00 sys = 17.55 CPU) @ 56.96/s (n=1000) JP encode(euc-jp): 3 wallclock secs ( 2.78 usr + 0.00 sys = 2.78 CPU) @ 359.55/s (n=1000) > perl5.7.2 t/benchmark.pl Tcl 10 Benchmark: timing 10 iterations of Tcl decode(7bit-jis), Tcl decode(euc-jp), Tcl encode(7bit-jis), Tcl encode(euc-jp)... Tcl decode(7bit-jis): 3 wallclock secs ( 3.41 usr + 0.00 sys = 3.41 CPU) @ 2.93/s (n=10) Loading /usr/home/dankogai/work/perl/ext/Encode/blib/lib/Encode/euc- jp.enc at /usr/home/dankogai/work/perl/ext/Encode/blib/lib/Encode.pm line 242 Tcl decode(euc-jp): 2 wallclock secs ( 1.73 usr + 0.00 sys = 1.73 CPU) @ 5.79/s (n=10) Tcl encode(7bit-jis): 30 wallclock secs (30.10 usr + 0.00 sys = 30.10 CPU) @ 0.33/s (n=10) Tcl encode(euc-jp): 25 wallclock secs (25.20 usr + 0.00 sys = 25.20 CPU) @ 0.40/s (n=10) # t/benchmark.pl # perl5.7.2 t/benchmark.pl SUBMODULE COUNT use strict; use blib; use Benchmark; use Encode; my $mod = shift or die; eval "use Encode::$mod;"; $@ and die "$mod:$@"; my $count = shift || 16; my $utf8_str = swallow("t/table.utf8"); Encode::_utf8_on($utf8_str); my $euc_str = swallow("t/table.euc"); my $jis_str = encode("7bit-jis", $utf8_str); timethese($count, { "$mod encode(euc-jp)" => sub { my $dummy = encode("euc-jp", $utf8_str); $dummy eq $euc_str or die; }, "$mod decode(euc-jp)" => sub { my $dummy = decode("euc-jp", $euc_str); $dummy eq $utf8_str or die; }, "$mod encode(7bit-jis)" => sub { my $dummy = encode("7bit-jis", $utf8_str); $dummy eq $jis_str or die; }, "$mod decode(7bit-jis)" => sub { my $dummy = decode("7bit-jis", $jis_str); $dummy eq $utf8_str or die; }, }); sub swallow{ my $fn = shift; open my $fh, $fn or die "$fn : $!"; read $fh, my $result, -s $fn; return $result; } __END__