使用Java+;桑巴舞+;赢7

使用Java+;桑巴舞+;赢7,java,performance,networking,samba,Java,Performance,Networking,Samba,我发现,从Win7客户端通过SAMBA文件夹调用Java的File.listFiles()非常慢,实际上比从Mac客户端调用要慢近100倍。(两个客户端都运行Java 7)。两个客户端自然都位于同一个1GB LAN上。一位客户已经从他的Win XP客户端进行了测试,获得的性能远远好于他的Win7客户端。有人知道如何解决这个问题吗 一些测试数据,包括计时: 清单31 SAMBA(“QNAP”NAS磁盘)上的文件夹: 赢7: listing \\nas\Public\David\Remote Sto

我发现,从Win7客户端通过SAMBA文件夹调用Java的
File.listFiles()
非常慢,实际上比从Mac客户端调用要慢近100倍。(两个客户端都运行Java 7)。两个客户端自然都位于同一个1GB LAN上。一位客户已经从他的Win XP客户端进行了测试,获得的性能远远好于他的Win7客户端。有人知道如何解决这个问题吗

一些测试数据,包括计时: 清单31 SAMBA(“QNAP”NAS磁盘)上的文件夹:

赢7:

listing \\nas\Public\David\Remote Stocks: 0.0s listing \\nas\Public\David\Remote Stocks\Animals: 0.093s listing \\nas\Public\David\Remote Stocks\Animals\.jalbum: 0.312s listing \\nas\Public\David\Remote Stocks\Animals\.jalbum\thumbs: 0.405s listing \\nas\Public\David\Remote Stocks\album: 1.248s listing \\nas\Public\David\Remote Stocks\album\Animals: 1.31s listing \\nas\Public\David\Remote Stocks\album\Animals\thumbs: 1.388s listing \\nas\Public\David\Remote Stocks\album\Animals\slides: 1.762s listing \\nas\Public\David\Remote Stocks\album\Animals\res: 2.542s listing \\nas\Public\David\Remote Stocks\album\Sports: 2.761s listing \\nas\Public\David\Remote Stocks\album\Sports\thumbs: 2.839s listing \\nas\Public\David\Remote Stocks\album\Sports\slides: 3.229s listing \\nas\Public\David\Remote Stocks\album\Sports\res: 3.978s listing \\nas\Public\David\Remote Stocks\album\res: 4.196s listing \\nas\Public\David\Remote Stocks\album\Scenic: 4.695s listing \\nas\Public\David\Remote Stocks\album\Scenic\thumbs: 4.773s listing \\nas\Public\David\Remote Stocks\album\Scenic\slides: 5.194s listing \\nas\Public\David\Remote Stocks\album\Scenic\res: 5.99s listing \\nas\Public\David\Remote Stocks\album\People: 6.208s listing \\nas\Public\David\Remote Stocks\album\People\thumbs: 6.302s listing \\nas\Public\David\Remote Stocks\album\People\slides: 6.692s listing \\nas\Public\David\Remote Stocks\album\People\res: 7.472s listing \\nas\Public\David\Remote Stocks\.jalbum: 7.659s listing \\nas\Public\David\Remote Stocks\Sports: 7.768s listing \\nas\Public\David\Remote Stocks\Sports\.jalbum: 7.909s listing \\nas\Public\David\Remote Stocks\Sports\.jalbum\thumbs: 7.987s listing \\nas\Public\David\Remote Stocks\Scenic: 8.486s listing \\nas\Public\David\Remote Stocks\Scenic\.jalbum: 8.642s listing \\nas\Public\David\Remote Stocks\Scenic\.jalbum\thumbs: 8.72s listing \\nas\Public\David\Remote Stocks\People: 9.282s listing \\nas\Public\David\Remote Stocks\People\.jalbum: 9.422s 清单\\nas\Public\David\Remote Stocks:0.0s 列表\\nas\Public\David\Remote Stocks\Animals:0.093s 列表\\nas\Public\David\Remote Stocks\Animals\.jalbum:0.312s 列表\\nas\Public\David\Remote Stocks\Animals\.jalbum\thumbs:0.405s 列表\\nas\Public\David\Remote Stocks\album:1.248s 列表\\nas\Public\David\Remote Stocks\album\Animals:1.31s 列表\\nas\Public\David\Remote Stocks\album\anies\thumbs:1.388s 列表\\nas\Public\David\Remote Stocks\album\anies\slides:1.762s 列表\\nas\Public\David\Remote Stocks\album\anies\res:2.542s 列表\\nas\Public\David\Remote Stocks\album\Sports:2.761s 列表\\nas\Public\David\Remote Stocks\album\Sports\thumbs:2.839s 列表\\nas\Public\David\Remote Stocks\album\Sports\slides:3.229s 列表\\nas\Public\David\Remote Stocks\album\Sports\res:3.978s 清单\\nas\Public\David\Remote Stocks\album\res:4.196s 列表\\nas\Public\David\Remote Stocks\album\scenent:4.695s 列表\\nas\Public\David\Remote Stocks\album\scenent\thumbs:4.773s 列表\\nas\Public\David\Remote Stocks\album\scene\slides:5.194s 列表\\nas\Public\David\Remote Stocks\album\scenet\res:5.99s 列表\\nas\Public\David\Remote Stocks\album\People:6.208s 列表\\nas\Public\David\Remote Stocks\album\People\thumbs:6.302s 列表\\nas\Public\David\Remote Stocks\album\People\slides:6.692s 列表\\nas\Public\David\Remote Stocks\album\People\res:7.472s 清单\\nas\Public\David\Remote Stocks\.jalbum:7.659s 清单\\nas\Public\David\Remote Stocks\Sports:7.768s 列表\\nas\Public\David\Remote Stocks\Sports\.jalbum:7.909s 列表\\nas\Public\David\Remote Stocks\Sports\.jalbum\thumbs:7.987s 列表\\nas\Public\David\Remote Stocks\scenent:8.486s 列表\\nas\Public\David\Remote Stocks\scenent\.jalbum:8.642s 列表\\nas\Public\David\Remote Stocks\scenent\.jalbum\thumbs:8.72s 列表\\nas\Public\David\Remote Stocks\People:9.282s 列表\\nas\Public\David\Remote Stocks\People\.jalbum:9.422s Mac上的相同列表:

listing /Volumes/Public/David/Remote Stocks: 0.0s listing /Volumes/Public/David/Remote Stocks/Animals: 0.013s listing /Volumes/Public/David/Remote Stocks/Animals/.jalbum: 0.018s listing /Volumes/Public/David/Remote Stocks/Animals/.jalbum/thumbs: 0.022s listing /Volumes/Public/David/Remote Stocks/album: 0.027s listing /Volumes/Public/David/Remote Stocks/album/Animals: 0.03s listing /Volumes/Public/David/Remote Stocks/album/Animals/thumbs: 0.032s listing /Volumes/Public/David/Remote Stocks/album/Animals/slides: 0.034s listing /Volumes/Public/David/Remote Stocks/album/Animals/res: 0.038s listing /Volumes/Public/David/Remote Stocks/album/Sports: 0.04s listing /Volumes/Public/David/Remote Stocks/album/Sports/thumbs: 0.042s listing /Volumes/Public/David/Remote Stocks/album/Sports/slides: 0.046s listing /Volumes/Public/David/Remote Stocks/album/Sports/res: 0.05s listing /Volumes/Public/David/Remote Stocks/album/res: 0.052s listing /Volumes/Public/David/Remote Stocks/album/Scenic: 0.058s listing /Volumes/Public/David/Remote Stocks/album/Scenic/thumbs: 0.064s listing /Volumes/Public/David/Remote Stocks/album/Scenic/slides: 0.068s listing /Volumes/Public/David/Remote Stocks/album/Scenic/res: 0.074s listing /Volumes/Public/David/Remote Stocks/album/People: 0.08s listing /Volumes/Public/David/Remote Stocks/album/People/thumbs: 0.082s listing /Volumes/Public/David/Remote Stocks/album/People/slides: 0.085s listing /Volumes/Public/David/Remote Stocks/album/People/res: 0.089s listing /Volumes/Public/David/Remote Stocks/.jalbum: 0.091s listing /Volumes/Public/David/Remote Stocks/Sports: 0.103s listing /Volumes/Public/David/Remote Stocks/Sports/.jalbum: 0.106s listing /Volumes/Public/David/Remote Stocks/Sports/.jalbum/thumbs: 0.108s listing /Volumes/Public/David/Remote Stocks/Scenic: 0.11s listing /Volumes/Public/David/Remote Stocks/Scenic/.jalbum: 0.122s listing /Volumes/Public/David/Remote Stocks/Scenic/.jalbum/thumbs: 0.124s listing /Volumes/Public/David/Remote Stocks/People: 0.126s listing /Volumes/Public/David/Remote Stocks/People/.jalbum: 0.133s 列表/卷/公共/大卫/远程股票:0.0s 列表/卷/公共/大卫/远程股票/动物:0.013s listing/Volumes/Public/David/Remote Stocks/Animals/.jalbum:0.018s listing/Volumes/Public/David/Remote Stocks/Animals/.jalbum/thumbs:0.022s 列表/卷/公共/大卫/远程股票/专辑:0.027s 列表/卷/公共/大卫/远程股票/专辑/动物:0.03s 列表/卷/公共/大卫/远程股票/专辑/动物/拇指:0.032s 列表/卷/公共/大卫/远程股票/专辑/动物/幻灯片:0.034s 列表/卷/公共/大卫/远程股票/专辑/动物/资源:0.038s 列表/卷/公共/大卫/远程股票/专辑/体育:0.04s 列表/卷/公共/大卫/远程股票/专辑/运动/拇指:0.042s 列表/卷/公共/大卫/远程股票/专辑/体育/幻灯片:0.046s 列表/卷/公共/大卫/远程股票/专辑/体育/资源:0.05s 列表/Volumes/Public/David/Remote Stocks/album/res:0.052s 列表/卷/公共/大卫/远程股票/专辑/风景:0.058s 列表/卷/公共/大卫/远程股票/专辑/风景区/拇指:0.064s 列表/卷/公共/大卫/远程股票/专辑/风景/幻灯片:0.068s 列表/卷/公共/大卫/远程股票/专辑/风景区/资源:0.074s 列表/卷/公共/大卫/远程股票/相册/人:0.08s 列表/卷/公共/大卫/远程股票/相册/人物/拇指:0.082s 列表/卷/公共/大卫/远程股票/相册/人物/幻灯片:0.085s 列表/Volumes/Public/David/Remote Stocks/album/People/res:0.089s listing/Volumes/Public/David/Remote Stocks/.jalbum:0.091s 上市/成交量/公开/大卫/远程股票/体育:0.103s listing/Volumes/Public/David/Remote Stocks/Sports/.jalbum:0.106s listing/Volumes/Public/David/Remote Stocks/Sports/.jalbum/thumbs:0.108s 上市/成交量/公开/大卫/远程股票/风景区:0.11s listing/Volumes/Public/David/Remote Stocks/scient/.jalbum:0.122s listing/Volumes/Public/David/Remote Stocks/scient/.jalbum/thumbs:0.124s 上市/成交量/公开/大卫/远程股票/人:0.126s listing/Volumes/Public/David/Remote Stocks/People/.jalbum:0.133s
最后,我尝试在Windows上执行多线程列表,以克服网络延迟效应。它起到了一定的作用,从9秒到3秒,即快3倍,但性能仍然比MacBook pro客户端测得的0.133s慢得多。

我想你偶然发现了一个已知的Windows问题

或许本文可以帮助您:

编辑:

如果您确信您的问题不是由于操作系统连接到旧SMB协议公开的共享时的不良行为造成的,那么这是一种(并非闻所未闻的)可归咎于JDK实现的缓慢

OpenJDK和Oracle Java的
Java.io.File.listFiles()
委托给(未公开的)抽象类
Java.io.FileSystem
String[]list()
方法,该方法反过来又由
Java.io.UnixFileSystem
Java.io.Win32FileSystem
以特定于平台的方式实现,和
java.io.WinNTFileSystem

他们的
list()
函数始终是
本机的
,因此我认为速度慢是由JRE附带的DLL实现造成的


我们以前在WindowsXP中遇到过类似的文件浏览问题。很长一段时间以来,这是JRE的一个突出缺陷。

我认为您偶然发现了一个已知的Windows问题

也许是这个阿蒂