>>>>> "Alexei" == Alexei Znamensky <[email protected]> writes:
Alexei> 2011/1/14 "Flávio R. Lopes" <[email protected]>
Alexei> Em 14-01-2011 23:35, Daniel de Oliveira Mantovani escreveu:
Alexei> my $backup_nome = "$destino" . "$prefixo" . "$data_backup"
. ".tar.bz2";
Alexei> Que desperdício de processamento :P
Alexei> my $backup_nome = "$destino$prefixo$data_backup" .
'.tar.bz2';
Alexei> mantovani--
Alexei> 2) Mantovani: eu esperava mais de você a essa altura do
Alexei> campeonato. Flávio, os parcos milissegundos que você poderia
Alexei> eventualmente ganhar na concatenação das strings não são
Alexei> NADA comparados com os vários segundos que você irá esperar
Alexei> pelo backup. Enquanto isso, seu código ficará 2x mais
Alexei> difícil de ler.
Sem contar que, na verdade, interpolação é sempre mais lento que
concatenação:
bjork:~ edenc$ perl -MO=Concise -le'print "$destino" . "$prefixo" .
"$data_backup" . q{.tar.bz2};'
f <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 1 -e:1) v:{ ->3
e <@> print vK ->f
3 <0> pushmark s ->4
d <2> concat[t6] sKS/2 ->e
b <2> concat[t5] sKS/2 ->c
8 <2> concat[t3] sK/2 ->9
5 <@> stringify[t1] sK/1 ->6
- <0> ex-pushmark s ->4
- <1> ex-rv2sv sK/1 ->5
4 <$> gvsv(*destino) s ->5
7 <@> stringify[t2] sK/1 ->8
- <0> ex-pushmark s ->6
- <1> ex-rv2sv sK/1 ->7
6 <$> gvsv(*prefixo) s ->7
a <@> stringify[t4] sK/1 ->b
- <0> ex-pushmark s ->9
- <1> ex-rv2sv sK/1 ->a
9 <$> gvsv(*data_backup) s ->a
c <$> const(PV ".tar.bz2") s ->d
= 21 opcodes
bjork:~ edenc$ perl -MO=Concise -le'print "$destino$prefixo$data_backup" .
q{.tar.bz2};'
c <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 1 -e:1) v:{ ->3
b <@> print vK ->c
3 <0> pushmark s ->4
a <2> concat[t4] sK/2 ->b
- <1> ex-stringify sK/1 ->9
- <0> ex-pushmark s ->4
8 <2> concat[t2] sKS/2 ->9
6 <2> concat[t1] sK/2 ->7
- <1> ex-rv2sv sK/1 ->5
4 <$> gvsv(*destino) s ->5
- <1> ex-rv2sv sK/1 ->6
5 <$> gvsv(*prefixo) s ->6
- <1> ex-rv2sv sK/1 ->8
7 <$> gvsv(*data_backup) s ->8
9 <$> const(PV ".tar.bz2") s ->a
= 17 opcodes
Melhor mesmo seria:
my $backup_nome = $destino . $prefixo . $data_backup . '.tar.bz2';
bjork:~ edenc$ perl -MO=Concise -le'print $destino . $prefixo . $data_backup .
q{.tar.bz2};'
c <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 1 -e:1) v:{ ->3
b <@> print vK ->c
3 <0> pushmark s ->4
a <2> concat[t3] sKS/2 ->b
8 <2> concat[t2] sKS/2 ->9
6 <2> concat[t1] sK/2 ->7
- <1> ex-rv2sv sK/1 ->5
4 <$> gvsv(*destino) s ->5
- <1> ex-rv2sv sK/1 ->6
5 <$> gvsv(*prefixo) s ->6
- <1> ex-rv2sv sK/1 ->8
7 <$> gvsv(*data_backup) s ->8
9 <$> const(PV ".tar.bz2") s ->a
= 15 opcodes
O único problema com a abordagem inicial do flávio foi interpolar as
variáveis individualmente, que pra esse caso em particular, é
desnecessário.
--
Eden Cardim
Software Engineer
+55 73 9986-3963
edencardim.com
=begin disclaimer
Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
SaoPaulo-pm mailing list: [email protected]
L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer