我正在使用mod-perl。我的印象是我们的变量不会为每次执行而创建。即如果我创建一个哈希变量,那么varible将被创建一次,并将保留在apache的内存缓存中以便后续运行。
所以我的问题是,mod-perl中的低于2的执行速度会有什么不同吗?
Module1
....
....
our %myhash = qw ( list of key value );
...
....
sub fun() {
if(exists $myhash{'key'}) {
...................
return ;
}
和
Module2
.....
.....
sub fun() {
my %myhash = qw ( list of key value );
if(exists $myhash{'key'}) {
...................
return ;
}
如果我每次运行一次调用此函数,哪一个在执行速度 on mod-perl 方面更好?
答案 0 :(得分:1)
所有静态变量(包括global和package作用域)都只会初始化一次。因此,如果要设置大型数据结构,将在许多请求中使用,那么静态初始化它们会更有效。
您无需使用“我们的”声明它们。如果它们仅在一个包中引用,那么您可以使用“我的”(当然在所有潜在的子代之外)来最小化名称冲突的风险。
答案 1 :(得分:0)
我将使用Module1,因为它创建了一个全局变量,该变量创建一次并且可以被子例程访问,而不是每次调用子例程时都创建。