$ perl -le' use warnings; use strict; my @c = 1 .. 10_000_000; print @c . " @c[0..19]"; my @d; for my $dd ( @c ) { push @d, $dd % 2; } print @d . " @d[0..19]"; my @e; for my $ee ( @d ) { if ( !$ee ) { push @e, $ee; } } print @e . " @e[0..19]"; ' 10000000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 10000000 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 50000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
$ perl -le' use warnings; use strict; my @c = 1 .. 10_000_000; print @c . " @c[0..19]"; my @d = map $_%2, @c; print @d . " @d[0..19]"; my @e = grep /0/, @d; print @e . " @e[0..19]"; ' 10000000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 10000000 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 5000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The quickest way to do what you want:
$ perl -le' my @c = 1 .. 10_000_000; print @c . " @c[0..19]"; my @e = ( 0 ) x ( @c / 2 ); print @e . " @e[0..19]"; ' 10000000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 5000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
In reply to Re: Speed comparison of foreach vs grep + map
by jwkrahn
in thread Speed comparison of foreach vs grep + map
by mldvx4
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |