2013-04-10 91 views
2

我必須在一個文件上用Perl編寫多行代碼,這些代碼是一行一行地寫入小塊的優點還是缺點,相對於保存所有內容並訪問文件句柄只寫一次?寫入小文件或一次寫入文件會更好嗎?

+0

你真的在問,如果在內存中保存所有內容將使用更多的內存而不是將所有內容保存在內存中? – geoffspear 2013-04-10 13:04:38

+0

如果您可以將數據寫入接近創建點的位置並釋放該數據所使用的內存,那麼您將使用較少的內存,而不是將所有數據保存在某處並一次寫入。如果你能給我們一些更具體的信息來幫助我們給出更好的答案,那將是很有幫助的。 – tauli 2013-04-10 13:09:05

+0

抱歉,這個問題沒有得到很好的解決。這是一個普遍的問題,即儘可能快地寫東西比較好,即使它意味着多次訪問文件,或者通過累積數據並一次寫入來限制對文件的訪問次數。 – 2013-04-10 13:11:12

回答

6

Perl在引擎下執行文件寫入的緩衝 - 它保存數據直到有一個重要的塊,然後一次寫入。

因此,即使您多次寫入文件句柄,實際寫入文件的次數也是有限的。編寫很多次都不會有意義的性能損失 - 除非您明確規避緩衝(例如設置$|=1或每次寫入時關閉並重新打開文件)。

如果最方便的話,你應該逐行寫。

1

只要您知道要寫入的數據是什麼,寫入數據通常會更方便,所以要這樣做。重複使用文件句柄沒有缺點。

而且,是的,如果寫入的數據總量大於輸出緩衝區的大小,那麼會節省一些內存,但是,實際上,除非您要寫入幾十兆字節,否則內存消耗的差異可能會減少並不重要,所以請以最清晰和最易於維護的方式進行編寫。

+0

謝謝,我想也許多次訪問文件句柄的行爲可能會很麻煩;這裏不是真正的IT專家。 – 2013-04-10 13:13:25