develooper Front page | perl.perl5.porters | Postings from October 2004

RE: optimization idea

Thread Previous | Thread Next
Elizabeth Mattijsen
October 26, 2004 03:24
RE: optimization idea
Message ID:
At 10:30 AM +0100 10/26/04, Orton, Yves wrote:
>Dave Mitchell wrote at 25 October 2004 22:38:
>>  On Mon, Oct 25, 2004 at 09:09:16PM +0200, Elizabeth Mattijsen wrote:
>>  > Wouldn't you need to add taking a ref of the var, to
>>  invalidate this
>>  > optimization?  Specifically for this case:
>>  >
>>  > sub statename {
>>  >     my $name = 'david';
>>  >     ${\$name} = 'liz';
>>  >     return "hello, my name is $name";
>>  > }
>But surely in this case the ${\$name} should itself be optimised to $name

Well, possibly.  I just wrote it that way to be as succinct as 
possible.  I seriously doubt whether spending the extra cycles for 
checking for this particular type of situation are worth the 

>  So it becomes
>sub statename {
>     my $name = 'david';
>     $name = 'liz';
>     return "hello, my name is $name";
>And then would become
>sub statename {
>     return "hello, my name is liz";
>>  Then there's stuff like this, which you can't detect at compile ime:
>>      sub statename {
>>	my $name = 'david';
>>	eval '$name = "liz"';
>>	return "hello, my name is $name";
>>      }
>You cant detect the consequence of the eval but you can detect the eval no?
>So you could disable the optimisation if there is no eval between the
>constant assignment and the stringification....

I think there are just too many ways for this optimization to go 
wrong.  Only recently another optimization I proposed ("my @list = 
()" becomes "my @list") had serious side effects that were only found 
after release.  And that was an easy one compared to the one 
suggested here.

>BTW, all of this im speaking entirely hypothetically and only out of
>curiousity as to whether im correct here.

I have no idea, I don't know the intricacies of the internals that 
well.  From a conceptual and logical point I would agree.  But I'm 
under the impression logic in Perl's internals is often burdened 
under many, many layers of (other) logical sediment.


Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About