Benchmark::Forking em conjunto com Class::Load é uma alternativa válida.
O primeiro garante que versões distintas sejam rodadas em processos
distintos (e isolados). Já o segundo é um "eval { require ... }", só que
decente.
Imagino algo assim:

#!/usr/bin/env perl
use strict;
use utf8;
use warnings qw(all);

use Benchmark::Forking qw(cmpthese);
use Class::Load qw(load_class);

my $loaded = 0;
my $run = sub {
    unless ($loaded++) {
        unshift @INC => shift;
        load_class('My::Module');
    }
    My::Module::stuff_to_benchmark();
};

my $tests = {
    v1 => sub { $run->('v1/lib') },
    v2 => sub { $run->('v2/lib') },
};

cmpthese(5_000 => $tests);


ABS()


2013/5/10 Tiago Peczenyj <[email protected]>

> Opa pessoal
>
> estou com o seguinte problema: eu tenho uma versão X de um módulo. Eis que
> eu fiz pequenas alterações e criei uma versão Y. Como eu posso comparar
> ambos no mesmo teste.
>
> Assim
>
> cmpthese(
>     5_000,{
>     "versao x" => sub { $client_x->foo() },
>     "versao y" => sub { $client_y->foo() },
> });
>
> tem uma forma? ou eu deveria fazer os testes separados na mesma maquina e
> comparar (uma pegando do diretorio x e a outra do y)?
>
> --
> Tiago B. Peczenyj
> Linux User #405772
>
> http://about.me/peczenyj
>
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: [email protected]
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
=begin disclaimer
   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
 SaoPaulo-pm mailing list: [email protected]
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer

Responder a