2014-02-19 30 views
1

我正在使用mod-perl。我的印象是,我們的變量不會爲每次執行而創建。即如果我創建了一個散列變量,那麼該變量將被創建一次,並將保留在apache的內存緩存中供後續運行。Mod-perl和我們的變量 - 它加速嗎?

所以我的問題是會不會有在MOD-perl的下面兩個執行速度有什麼區別?

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 ; 
} 

哪一個是對MOD-perl的在執行的速度長期更好,如果我每次運行一次調用這個函數?

回答

0

我將與Module1一起創建一個全局變量,該變量創建一次,並且可以通過子例程來訪問,而不是每次調用子例程時創建。

+0

如果我在單次運行中使用此功能,該怎麼辦?不是兩次? – virus

+0

在這種情況下,它並沒有那麼重要。這取決於用例。通常,一些變量在全球範圍內維護,這爲程序的可維護性提供了很大的好處。但是,我通常會盡量減少全球變數。 – HackerKarma

1

所有的靜態變量,包括全球和包範圍的,將獲得初始化一次。因此,如果您有大量數據結構來設置將在很多請求中使用的數據結構,則靜態初始化它們會更有效率。

你並不需要聲明他們用「我們」。如果只在一個包中引用它們,那麼您可以使用「我的」(當然不包括所有潛艇),以最大限度地減少名稱衝突的風險。

相關問題