Mod-perl和我们的变量 - 它加速了吗?

时间:2014-02-19 05:46:41

标签: perl mod-perl mod-perl2

我正在使用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 方面更好?

2 个答案:

答案 0 :(得分:1)

所有静态变量(包括global和package作用域)都只会初始化一次。因此,如果要设置大型数据结构,将在许多请求中使用,那么静态初始化它们会更有效。

您无需使用“我们的”声明它们。如果它们仅在一个包中引用,那么您可以使用“我的”(当然在所有潜在的子代之外)来最小化名称冲突的风险。

答案 1 :(得分:0)

我将使用Module1,因为它创建了一个全局变量,该变量创建一次并且可以被子例程访问,而不是每次调用子例程时都创建。