簡體   English   中英

第一個RandomAccessFile初始化緩慢,隨后很快

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM