![]() |
1
24
常量子例程,即具有空原型和常量返回值的子例程是内联的。这就是为什么 constant pragma定义常量:
否则,Perl允许在运行时动态重新定义子例程,因此内联不适合。 对于在给定相同输入时始终返回相同值的子例程,可以使用 memoization
Chapter 13 of Programming Perl
提供有关由
你可以看到不断折叠自己的效果:
perl -MO=Deparse t.pl 输出: sub log_ok () { 1 } use warnings; use strict 'refs'; do { warn "log ok\n" }; t.pl syntax OK
在这里,不断的折叠导致了
脱毛产量: sub log_ok () { use warnings; use strict 'refs'; 0.5 > rand; } use warnings; use strict 'refs'; if (log_ok) { warn "log ok\n"; } t.pl syntax OK
一个
|
![]() |
2
5
Perl只允许内联常量函数。从 perldoc perlsub :
|
![]() |
3
3
我没有试过这些,但如果你有时间,你可以试试 它们都是源代码过滤器,所以你必须检查你在性能上的投资回报。 最后一个实际上有一个关于 cpanratings
--
事实上
|
![]() |
4
1
在编写Perl时,可能不应该考虑速度。去吧,让事情正常运转。如果稍后的分析显示由于调用了一个简单的函数而花费了大量时间,那么可以自己内联该函数。 |