http://www.perlmonks.org?node_id=448768


in reply to Choosing the right sort (Or: WUDsamatter?)

you should try Sort::Key:
use Sort::Key; @sorted=ikeysort { /foo(\d+)\.tla/; $1 } @data;

Replies are listed 'Best First'.
Re^2: Choosing the right sort (Or: WUDsamatter?)
by salva (Canon) on Apr 19, 2005 at 09:28 UTC
    I have added an entry for Sort::Key to Pustular Postulant benchmarks
    use Sort::Key; sub mykeysort { ikeysort { /foo(\d+)\.tla/; $1 } @_ }
    and those are the results for 200 elements:
    Rate naive schwartzian guttros Sort::Key naive 17.9/s -- -73% -79% -83% schwartzian 67.1/s 276% -- -20% -36% guttros 84.0/s 371% 25% -- -19% Sort::Key 104/s 483% 55% 24% --

    for 5000 elements:

    Rate naive schwartzian guttros Sort::Key naive 0.413/s -- -77% -86% -89% schwartzian 1.79/s 334% -- -38% -52% guttros 2.88/s 597% 61% -- -23% Sort::Key 3.74/s 805% 109% 30% --

    for 50000 elements

    s/iter naive schwartzian guttros Sort::Key naive 30.2 -- -78% -87% -90% schwartzian 6.53 363% -- -42% -56% guttros 3.81 693% 72% -- -24% Sort::Key 2.90 942% 125% 31% --

    and for 500000 elements

    s/iter guttros Sort::Key guttros 39.6 -- -25% Sort::Key 29.7 33% --

    so Sort::Key is consistently ~30% faster than guttros ;-)