めも帖

「めも帖」代わりにダラダラと書いていったり、めもしたりしているだけです。

ベンチマークをとってみた

「ファイルを読み込んで、一定の処理後、表示する」という処理について、ほぼ同じコードで、ベンチマークを取ってみました。とったのは、処理が1つのPMに書かれているもの。もうひとつは、別のPMに実際の処理は書いてみたもの。
まず、ベンチマークのとり方を忘れそうなのでめも。

use Benchmark;
Benchmark::timethese(10000, {
	'処理名1' => \&test1,
	'処理名2' => \&test2,
});

sub test1 {
 ここに処理を書く
}

sub test2 {
 ここに処理を書く
}

で、問題はここから。同じ処理なんだけれど、継承を使っているほうが75%ほど遅いの...。これって、聞いていたことなんだけれど(Effective Perlだっけ?)、さすがにここまで違うかあ。
今回ベンチマークを取った理由は、もちろん処理の高速化をしたかったからなんだけれど、今後どうせなら、使いまわしとかしたいので、今回は遅いけれど、継承を使用します。
それにしても、Perlで継承を多用すると遅いのでしょうか。JavaとかRubyとかだとどうなんだろう。

追記:継承を使用している処理について、適切にしていくと60%程度までに差を抑えることが出来ました。リファレンスをもっと上手く使えば50%程度にはなるかもしれません。当然、継承を使用しない方も処理を最適化すると、その差は縮まらず。う〜ん。