性能

2018-02-24 16:03 更新

Perl 讓你干想干的事,包括很慢或內(nèi)存消耗這樣的事。此處將告訴你如何避免。

使用?while?而非?for?來(lái)迭代整個(gè)文件

代替讀取文件的所有行并使用?for?處理數(shù)組,使用?while?一次僅讀取一行。

這兩個(gè)循環(huán)的功能相同:

for ( <> ) {
    # do something
}

while ( <> ) {
    # do something
}

差異是?for?將整個(gè)文件讀到臨時(shí)數(shù)組,而?while?一次讀一行。對(duì)于小文件, 這可能不重要。但對(duì)于更大的文件,它可能吃掉你的所有可用內(nèi)存。

在這種情況下使用?while?是一種好實(shí)踐。

避免不必要的引起和字串化

除非絕對(duì)必要,不要引起大字符串:

my $copy = "$large_string";

這將創(chuàng)建兩個(gè)?$large_string?的拷貝(一個(gè)是?$copy,而另一個(gè)是引起)。 然而:

my $copy = $large_string;

僅創(chuàng)建一個(gè)拷貝。

對(duì)于字串化大的數(shù)組也是一樣:

{
    local $, = "\n";
    print @big_array;
}

這比下面的代碼更內(nèi)存高效:

print join "\n", @big_array;

或:

{
    local $" = "\n";
    print "@big_array";
}
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)