簡體   English   中英

從Java和.Net的DVD中讀取非常慢

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

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