在Windows上使用映射网络驱动器时提高java文件i/o性能

在Windows上使用映射网络驱动器时提高java文件i/o性能,java,windows,io,Java,Windows,Io,我们创建了一个java应用程序,它(除其他外)使用内置的文件IO库访问网络共享上特定文件夹中的文件列表。将文件夹指定为本地文件(例如c:\foobar)时,性能良好。但是,如果我们将网络驱动器映射到该文件夹,即使该文件夹位于同一台计算机上(例如,z:\->c:\foobar),性能也会受到影响。关于问题的起因有什么想法吗?更重要的是,关于如何改善这种情况,您有什么建议吗?您没有说您使用的是哪个版本的windows,但众所周知,SMB的早期版本有。简言之:稍后(例如Windows Server 2

我们创建了一个java应用程序,它(除其他外)使用内置的文件IO库访问网络共享上特定文件夹中的文件列表。将文件夹指定为本地文件(例如c:\foobar)时,性能良好。但是,如果我们将网络驱动器映射到该文件夹,即使该文件夹位于同一台计算机上(例如,z:\->c:\foobar),性能也会受到影响。关于问题的起因有什么想法吗?更重要的是,关于如何改善这种情况,您有什么建议吗?

您没有说您使用的是哪个版本的windows,但众所周知,SMB的早期版本有。简言之:稍后(例如Windows Server 2012)=性能会更好,尽管您需要确保客户端和服务器都在使用最新版本的SMB以获得最佳性能。

可能导致问题的原因:SMB:-)也许可以尝试简单地加快远程FS访问(例如,询问超级用户堆栈)或使用更多缓冲(BufferedReader等,或更手动)。如果工作是“后台”,你也可以通过使用一些工作线程使应用程序“看起来更具响应性”。目录中有一大堆文件吗?延迟可能来自windows通过协议发送大量文件。目录中可能确实有许多文件(数千个)。协议的什么地方会让事情变得慢下来?我们在Linux或Solaris上没有此问题。