in reply to Re^5: Hash sorting (by value) woes
in thread Hash sorting (by value) woes
? The map is done before print sees it, and print is only called once, with a list. It is slower, of course, because you do have an extra list-building step. Interestingly, it is not slower than map in a void context (I'm using 5.8.0 here -- when was that optimized?):@temp_list = map { ...1... } ...2....; print @temp_list;
use Benchmark 'cmpthese'; my @vals = (10_000..15_000); open(ABYSS, '>', '/dev/null') or die "The abyss is closed.\n"; cmpthese(-2, { 'map' => sub { print ABYSS map {">>$_<<\n"} @vals }, 'map_void' => sub { map {print ABYSS ">>$_<<\n"} @vals }, 'for' => sub { print ABYSS ">>$_<<\n" for @vals } }); close ABYSS; __END__ Rate map_void map for map_void 11.9/s -- -23% -50% map 15.5/s 30% -- -34% for 23.6/s 99% 52% --
|
|---|