Dovreste procurarvi il modulo Devel::DProf (disponibile nella distribuzione
standard, o separatamente su CPAN) e usare Benchmark.pm della distribuzione
standard. Il modulo Benchmark consente di misurare la velocità di
porzioni specifiche del vostro codice, mentre Devel::DProf fornisce una
classifica dettagliata dei punti in cui il codice spende il suo tempo.
Ecco un esempio d'uso di Benchmark:
use Benchmark;
@robaccia = `cat /etc/motd`;
$iterazioni = 10_000;
timethese($iterazioni, {
'map' => sub { my @a = @robaccia;
map { s/a/b/ } @a;
return @a
},
'for' => sub { my @a = @robaccia;
local $_;
for (@a) { s/a/b/ };
return @a },
});
Ed ecco quello che stampa (su un certo calcolatore -- i risultati dipenderanno
dal vostro hardware, dal sistema operativo, e dal carico di lavoro del vostro
computer):
Benchmark: timing 10000 iterations of for, map...
for: 4 secs ( 3.97 usr 0.01 sys = 3.98 cpu)
map: 6 secs ( 4.97 usr 0.00 sys = 4.97 cpu)
Siate consapevoli del fatto che un buon benchmark è molto difficile
da scrivere. Esso si limita a controllare i dati che gli passate e dimostra
poco della differente complessità degli algoritmi a confronto.
|