【发布时间】:2010-11-25 14:44:38
【问题描述】:
我注意到在两个应用程序中生成文件的哈希值,一个用 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();
有什么提示吗?
谢谢。
【问题讨论】:
-
你能发布一些你是如何阅读的代码吗?
-
去掉哈希函数,只计算复制位。
-
我想您已经尝试增加/减少缓冲区大小?
标签: c# java windows performance dvd