5
我讀過mmap比fileinput更有優勢,因爲它會將頁面讀入內核pagecache並在用戶地址空間中共享頁面。而fileinput實際上會將頁面帶入內核,並將行復制到用戶地址空間。所以,fileinput有額外的空間開銷。mmap vs fileinput的優點
因此,我打算遷移到mmap,但我想從高級python黑客知道它是否會提高性能?
如果是這樣,是否有使用mmap的fileinput的類似實現?
如果您知道的話,請指點我的任何開源代碼。
謝謝
這是不正確的。 mmap:ed文件不需要放入RAM中 - 它們需要適合進程地址空間。可用的地址空間對於32位處理爲2-3 GB,對於64位處理非常大,與機器中實際的RAM數量無關。在一個64位的Python上,mmap一個100 GB的文件是完全合理的! – 2011-03-31 22:29:10
Baffe,沒錯,你是對的,我的意思是「這一切都必須適合內存,以避免你首先使用mmap避免的低效率」。這當然有點簡化,但請合理我在這裏給經驗法則不是一個關於算法中的本地化分析的完整論文 – AndrewStone 2011-04-01 00:12:57
我不太確定你的意思是什麼效率低下。 mmap:文件不會從磁盤讀取整個文件。只讀取您從mmap返回的對象實際訪問的文件部分。 – 2011-04-01 23:21:46