W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
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";
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: