[Omaha.pm] Sort quickie

Terry td3201 at gmail.com
Fri Aug 6 23:57:07 CDT 2004


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 at 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 at mail.pm.org
> [mailto:omaha-pm-bounces at 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 at 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 at mail.pm.org
> http://www.pm.org/mailman/listinfo/omaha-pm
> 
> _______________________________________________
> Omaha-pm mailing list
> Omaha-pm at mail.pm.org
> http://www.pm.org/mailman/listinfo/omaha-pm
>


More information about the Omaha-pm mailing list