[SP-pm] atalhos toscos
Eden Cardim
edencardim at gmail.com
Wed Oct 6 04:49:39 PDT 2010
>>>>> "Stanislaw" == Stanislaw Pusep <creaktive em gmail.com> writes:
Stanislaw> perl -le'print for reverse 0..10' Pois isso, sim,
Stanislaw> seria totalmente ineficiente e é um caso onde o velho e
Stanislaw> bom for($i=10;$i;$i--) seria o mais apropriado em todos
Stanislaw> os sentidos :)
O C-style for é mais eficiente em termos de utilização de memória,
porém, além de ser mais legível, reverse/range é mais rápido porque
compila para menos opcodes, além de ser mais curto e legível, então acho
que se enquadra no propósito original dessa thread, que é o de usar
atalhos. Em perl existem poucos motivos para se usar um C-style
for. Aliás, nesse exato momento não consigo pensar em um caso sequer.
use warnings;
use strict;
use Benchmark qw(:all);
timethese(10**7, {
for => sub {
my @array;
for(my $i = 10; $i >= 0; $i--) {
push @array, $i;
}
},
range => sub {
my @array = reverse 1..10;
}
});
bjork:sandbox edenc $ perl test.pl
Benchmark: timing 10000000 iterations of for, range...
for: 34 wallclock secs (32.60 usr + 0.16 sys = 32.76 CPU) @ 305250.31/s (n=10000000)
range: 22 wallclock secs (21.45 usr + 0.13 sys = 21.58 CPU) @ 463392.03/s (n=10000000)
bjork:sandbox edenc $ perl -v
This is perl 5, version 12, subversion 1 (v5.12.1) built for darwin-2level
--
Eden Cardim Need help with your Catalyst or DBIx::Class project?
Code Monkey http://www.shadowcat.co.uk/catalyst/
Shadowcat Systems Ltd. Want a managed development or deployment platform?
http://blog.edencardim.com/ http://www.shadowcat.co.uk/servers/
More information about the SaoPaulo-pm
mailing list