Это именно то, что отладочные инструменты для :)
Посмотрите на perldebug документы, в частности, в разделе профилирования.
В частности, запуск сценария с помощью perl -dDProf filename.pl приведет к созданию файла tt.out, который инструмент dprofpp (распространяемый с Perl) может подготовить отчет.
Я использовал следующий простой тестовый скрипт:
#!/usr/bin/perl
package Foo;
use strict;
use Class::MethodMaker [ scalar => ['bar'], new => ['new'] ];
package main;
use strict;
my $foo = new Foo;
$foo->bar('baz');
print $foo->bar . "\n";
Запуск его с Perl -d: DProf methodmakertest.pl, а затем с помощью dprofpp на выходе дало:
[[email protected]:~/tmp]$ dprofpp tmon.out
Class::MethodMaker::scalar::scal0000 has 1 unstacked calls in outer
Class::MethodMaker::Engine::new has 1 unstacked calls in outer
AutoLoader::AUTOLOAD has -2 unstacked calls in outer
Total Elapsed Time = 0.08894 Seconds
User+System Time = 0.07894 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c Name
25.3 0.020 0.020 4 0.0050 0.0050 Class::MethodMaker::Constants::BEG
IN
25.3 0.020 0.029 12 0.0017 0.0025 Class::MethodMaker::Engine::BEGIN
12.6 0.010 0.010 1 0.0100 0.0100 DynaLoader::dl_load_file
12.6 0.010 0.010 2 0.0050 0.0050 AutoLoader::AUTOLOAD
12.6 0.010 0.010 14 0.0007 0.0007 Class::MethodMaker::V1Compat::reph
rase_prefix_option
0.00 0.000 0.000 1 0.0000 0.0000 Class::MethodMaker::scalar::scal00
00
0.00 0.000 0.000 1 0.0000 0.0000 Class::MethodMaker::Engine::new
0.00 - -0.000 1 - - DynaLoader::dl_undef_symbols
0.00 - -0.000 1 - - Class::MethodMaker::bootstrap
0.00 - -0.000 1 - - warnings::BEGIN
0.00 - -0.000 1 - - warnings::unimport
0.00 - -0.000 1 - - DynaLoader::dl_find_symbol
0.00 - -0.000 1 - - DynaLoader::dl_install_xsub
0.00 - -0.000 1 - - UNIVERSAL::VERSION
0.00 - -0.000 1 - - Foo::new
Две самые дорогие вызовы - это классы Class :: MethodMaker :: Constants :: BEGIN и Class :: MethodMaker :: Engine :: BEGIN, которые явно вызывают только во время компиляции, поэтому они могут немного замедлить компиляцию вашего скрипта, но последующее создание объекта/accessor не влияет на это.