我有一個腳本,做了一大堆的一個二進制文件的fread
和fseek
通話,使用這樣創建的文件指針:是否有更有效的方式來處理二進制文件?
$fp = fopen('r','mybinaryfile');
的腳本約2,500單獨的文件涉及的二進制內,每個這會吸引多個fseek
和fread
調用,因此對文件指針的總操作可能遠遠超過20,000。
我是否正確地認爲使用我的$fp
文件指針進行的每個調用都會導致磁盤上的物理讀操作?
如果是這樣,我想知道是否將整個文件加載到內存並像這樣工作會更好。會嗎?
目前,當我運行這個腳本,大約需要20秒。對我來說似乎還有改進的餘地。
編輯:而且,如果有可能將文件帶入內存,那麼如何實現這一目標,同時堅持使用指針方法?每個文件只有大約3MB,因此內存不足不應該成爲問題。
只要您有足夠的內存以適合它,將整個內容加載到內存中會更快,否則它有點不便。總而言之,只要你不需要每分鐘運行一次,20秒就沒有問題。 – Louis 2012-04-23 01:48:50
我想我的問題也是如何將它加載到內存中嘿......但謝謝你的回答。我會更新這個問題。 – Alex 2012-04-23 01:50:28