[Bioperl-l] Re: issues with _rearrange

Tim Bunce Tim.Bunce@pobox.com
Mon, 23 Sep 2002 12:24:33 +0100


Hilmar - you are a legend.

:-)

Tim.

On Fri, Sep 20, 2002 at 12:02:39PM -0700, Hilmar Lapp wrote:
> The following variation turns out to be even marginally faster (perl 
> 5.6.0, Mac OSX 10.1.5), and has the benefit of not removing 
> intervening hyphens:
> 
> sub new_rearrange2 {
>     my ($self, $order) = (shift,shift);
>     return @_ unless ($#_ % 2 && substr($_[0]||'',0,1) eq '-');
>     my $i = 0;
>     my %param = map { $i++ % 2 ? $_ : substr(uc($_),1); } @_;
>     return @param{@$order};
> }
> 
> In a bit more readable way,
> 
> sub new_rearrange2 {
>     my ($self, $order) = (shift,shift);
>     return @_ unless ($#_ % 2 && substr($_[0]||'',0,1) eq '-');
>     my %param;
>     while (@_) {
> 		my $key = substr(uc(shift),1);
>         $param{ $key } = shift;
>     }
>     return @param{@$order};
> }
> 
> appears to have about the same speed.
> 
> 	-hilmar
> 
> On Friday, September 20, 2002, at 11:14 AM, Hilmar Lapp wrote:
> 
> >
> >On Friday, September 20, 2002, at 09:39 AM, Ewan Birney wrote:
> >
> >>
> >>Tim - you are a legend.
> >>
> >>
> >>guys - I am planning to apply Tim's new _rearrange now at least 
> >>which is a
> >>definite win for most other routes right? Any objections?
> >>
> >>
> >
> >If you don't do it, I'll do. ;-)
> >
> >Tim, two questions: the conclusion is that s// is slower (~2x) than 
> >tr//? Would substr($_,0,1,"") (for removing the initial hyphen) 
> >give away the speedup, two?
> >
> >	-hilmar
> >--
> >-------------------------------------------------------------
> >Hilmar Lapp                            email: lapp at gnf.org
> >GNF, San Diego, Ca. 92121              phone: +1-858-812-1757
> >-------------------------------------------------------------
> >
> >_______________________________________________
> >Bioperl-l mailing list
> >Bioperl-l@bioperl.org
> >http://bioperl.org/mailman/listinfo/bioperl-l
> >
> --
> -------------------------------------------------------------
> Hilmar Lapp                            email: lapp at gnf.org
> GNF, San Diego, Ca. 92121              phone: +1-858-812-1757
> -------------------------------------------------------------
>