[英]Very slow read from DVD in Java and .Net
我注意到在兩個用於生成文件哈希的應用程序中,一個用Java編寫,另一個用C#編寫,從DVD讀取時的性能非常糟糕。 我正在使用Windows XP SP3。 我從噪音中注意到,驅動器在讀取一堆數據塊后會繼續旋轉,導致兩次讀取之間停頓了幾秒鍾。
奇怪的是,當我使用資源管理器將文件復制到硬盤或使用md5sum(用C編寫的實用程序)時,不會發生這種情況。 也。 在使用相同硬件的Linux中運行時,Java應用程序可以正常運行。
private static final byte[] m_buf = new byte[1048576*3];
...
//Using a BufferedInputStream makes no difference
InputStream in = new FileInputStream(file);
while((last_read = in.read(m_buf)) != -1){
update_hash(m_buf, 0, last_read);
}
in.close();
有什么提示嗎?
謝謝。
將緩沖區的大小減小到1024字節后,問題消失了。 不知道確切的解釋,但是可能是因為讀取頻率更高,DVD驅動程序不會降低驅動器速度。
感謝您的評論
我猜測Java代碼會將DVD視為文件系統上的常規文件,而Windows可能會優化讀取/寫入。
由於Java IO調用轉到了native / OS調用,因此我猜想在進行IO調用以讀取DVD時linux OS更智能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.