File.lastModified() 慢得要命!

2024-02-19

我正在做文件的递归副本等xcopy /D http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/xcopy.mspx?mfr=true我只想复制较新的文件目标文件(我cannot use xcopy直接,因为我需要在复制过程中更改一些文件)。

在java中我使用lastModified() http://download.oracle.com/javase/1.4.2/docs/api/java/io/File.html#lastModified%28%29检查目标文件是否比源文件旧并且速度非常慢。

  • 我可以加快这个过程(也许使用 JNI??)?
  • 是否有其他复制脚本可以更好地完成这项工作(复制新文件+正则表达式更改一些文本文件)?

无论如何复制文件都不是一个选项,因为这比检查上次修改日期(通过网络复制)花费更多时间。


您需要确定为什么它这么慢。

当您运行 progrma 时,进程的 CPU 利用率是多少。如果超过 50% 用户,那么你应该能够优化你的程序,如果低于 20%,那么你无能为力。

通常这种方法很慢,因为您正在检查的文件位于磁盘上而不是内存中。如果是这种情况,您需要加快磁盘访问速度,或者购买更快的驱动器。例如SSD 的速度可以快 10-100 倍。

批量查询可能会有所帮助。您可以通过使用多个线程检查上次修改日期来完成此操作。例如有一个固定大小的线程池并为每个文件添加一个任务。线程池的大小决定了一次轮询的文件数量。

这允许操作系统重新排序请求以适应磁盘上的布局。注意:这在理论上很好,但是您必须测试这是否会使您的操作系统/硬件上的速度更快,因为它可能会使速度变慢。 ;)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

File.lastModified() 慢得要命! 的相关文章

随机推荐