No Perl há o módulo Benchmark que nos permite executar códigos e compará-los em questão de processamento a outros, e na saída ainda temos um simples gráfico indicando a porcentagem de quão rápido um certo comando é em relação a cada participante do teste.
Veja um exemplo:
use Benchmark 'cmpthese';
my $str = "<a><b><c><d><a><b><c><d><a><b><c><d><a><b><c><d><a><b><c><d>";
cmpthese(-5, {
a => sub { $str =~ /<[^>]*>/g },
b => sub { $str =~ /<.*?>/g },
}, 'all');
Assim estamos comparando a execução das duas expressões regulares, cada um tendo um tempo mínimo de 5 segundos.
E temos a seguinte saída:
Benchmark: running a, b for at least 5 CPU seconds... a: 5 wallclock secs ( 5.38 usr -0.01 sys + 0.00 cusr 0.00 csys = 5.36 CPU) @ 544166.79/s (n=2916734) b: 6 wallclock secs ( 5.03 usr 0.00 sys + 0.00 cusr 0.00 csys = 5.03 CPU) @ 610819.36/s (n=3073643) Rate a b a 544167/s -- -11% b 610819/s 12% --
Ou seja, o código indicado pela letra b é 12% mais rápido que a, e b o inverso, obviamente. :)
Referência
Arquivado como:Perl