[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Omaha.pm] Sort quickie
This thread reminded me of how little I know of perl.....I just
pretend more or less......
On Fri, 6 Aug 2004 12:20:23 -0500, Miller, Scott L (Omaha Networks)
<scott.l.miller@hp.com> wrote:
> Very cool! This thread has taught me about the map function. I'd pretty much either ignored or glossed over ever reading about them before.
>
> And as a bonus, I found out about the ST, GRT topics! mmm, mmm, good...
>
> Thanks!
>
> -Scott
>
>
>
> -----Original Message-----
> From: omaha-pm-bounces@mail.pm.org
> [mailto:omaha-pm-bounces@mail.pm.org]On Behalf Of Hugh Jarce
> Sent: Thursday, August 05, 2004 6:22 PM
> To: Perl Mongers of Omaha, Nebraska USA; Perl Mongers of Omaha, Nebraska
> USA
> Subject: Re: [Omaha.pm] Sort quickie
>
> Jay Hannah <jay@jays.net>:
> > -ponder- I need to study Benchmark. Looks cool. What's the point of
> > @x? Can
> >
> > sub j9 { my @x = sort by_date @dates }
> >
> > be written as
> >
> > sub j9 { sort by_date @dates }
> > ?
>
> No. Benchmark calls the subs in scalar context; the my @x is used to
> force sort to be called in list context. As for what sort *should*
> do in scalar context, noone is really sure -- the latest consensus
> is that it should play nethack:
>
> <http://www.nntp.perl.org/group/perl.perl5.porters/92250>
> <http://www.nntp.perl.org/group/perl.perl5.porters/92477>
>
> >> sub j1 {
> >> my @x = map { substr($_,4) } sort map { substr($_,4).$_ } @dates
> >> }
> >
> > -laugh- Took me 3 minutes to figure out what that does. map tends to
> > confuse my limited synapses.
> >
> >> Which surprised me. I expected j1 to be much faster.
> >
> > Usually its faster for me to re-write a use of map than it is for me to
> > figure out what I was doing when I wrote it. -grin- Typically I can't
> > grok map at a glance, which slows me down. Can't argue w/ fast
> > benchmarking though!
> >
> > Thanks for the tips!
>
> You're welcome. Actually, I wasn't trying to be silly on purpoose
> (for once), just following the standard GRT sort hack:
>
> <http://www.perlmonks.org/index.pl?node_id=145659>
>
> The GRT and its cousin the Schwartzian Transform are usually a lot
> faster whenever the comparison function is expensive because they
> pre-compute the sort keys just n times (rather than n log n when
> called by sort). The GRT is usually faster than the Schwartzian
> Transform because sort without a sort block or function is done
> in C and so is faster than interpreting the Perl sort function.
>
> Hugh
>
> __________________________________
> Do you Yahoo!?
> Take Yahoo! Mail with you! Get it on your mobile phone.
> http://mobile.yahoo.com/maildemo
> _______________________________________________
> Omaha-pm mailing list
> Omaha-pm@mail.pm.org
> http://www.pm.org/mailman/listinfo/omaha-pm
>
> _______________________________________________
> Omaha-pm mailing list
> Omaha-pm@mail.pm.org
> http://www.pm.org/mailman/listinfo/omaha-pm
>