いくつかのスクリプト言語の処理系では、オブジェクトを生成して利用する場合と比較して、クロージャを生成する場合のオーバーヘッドが大きいという問題が知られています。最近、Perlでクロージャを使いたい場面に遭遇したので、ベンチマークをとってみることにしました。 結果、以下のように両者を使うアプローチで大きな速度差はないということがわかったのでメモ。 $ perl closure-vs-method.pl Rate method closure method 535/s -- -12% closure 609/s 14% -- $ cat closure-vs-method.pl use strict; use warnings; use Benchmark qw(cmpthese); my $COUNT = 1000; sub doit_closed { my $cb = shift; $cb