[英]First RandomAccessFile initialization slow, subsequently fast
我注意到,Java中RandomAccessFile
對象的第一次初始化比隨后將RandomAccessFile
對象初始化為磁盤上的同一文件要慢得多。 是否有一些后台緩存操作系統可以實現這一點?
例證:我正在從磁盤加載圖像並允許用戶翻閱它們。 我希望瓶頸是圖像的顯示,但在第一次加載時,瓶頸是加載圖像(使用JProfiler發現瓶頸;每次調用RandomAccessFile<Init>
~8ms)。 如果我翻回我已經查看的圖像,對RandomAccessFile<Init>
的調用只有幾微秒。
有沒有人見過這樣的東西? 有沒有解決方法? 數據集可能包含100,000個圖像,因此初始化一堆虛擬RandomAcessFile
對象可能不可行。
初始化的代碼行很簡單:
RandomAccessFile fileIn = new RandomAccessFile(abspath, "r");
是的,操作系統緩存。
如果繞過操作系統緩存,后續打開的文件將與第一個文件一樣慢,那么為什么要這樣呢?
第一次打開文件時緩存不會減慢,它可以提高重新打開文件的性能,而不必等待慢速硬盤驅動器讀取數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.