On 4/16/09 Thu  Apr 16, 2009  1:39 PM, "edw...@yandex.ru" <edw...@yandex.ru>
scribbled:

> Hello,
> 
> I would like to know, how to force perl unfold "foreach" expression during the
> compilation, i.e. I want next code:
> 
>      
> foreach (1..100) {
>     block
> } 
> 
> to be compiled like this:
> 
> block[$_ = 1]
> 
> block[$_ = 2]
> 
> block[$_ = 3]
> 
> .
> .
> .
> 
> block[$_ = 100]
> 
> Where block[$_ = n] means "block" with all occurences of $_ substituted with
> n.
> Of course, we presume that array like (1..100) is known at compile time.

Can you explain why you want to do this?

Compiler and run-time options for Perl are given in 'perldoc perlrun'. I
don't see anything there that will affect how the Perl compiler optimizes
the code it generates or specifically to unfold loops.

I suggest you write a program that measures the execution times for the
iterative-loop case and the unfolded case and compare them to see if you
will gain enough execution time (if that is indeed what you are seeking) to
justify the additional memory needed to contain the unwrapped block
statements. (Were I to do this, I would write a Perl program to generate the
Perl program!) See the Benchmark module.




-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to