Have a network performance issue and suspect it is Java related.
Customers using network drives (NAS) sometimes report extremely slow performance when using Java software jAlbum. Have narrowed this down to the File.listFiles() call. It seems to behave almost 100 times slower on a Win 7 client than on a Mac client (using either Java 6 or your Java 7). On a Win XP client, the performance is decent. A pure folder copy operation by dragging and dropping a network mounted folder to a local disk is far faster. Therefore suspect that something in how Java interacts with the file system on Win 7 is responsible.
Here are some timings listing 31 folders mounted on a "QNAP" network disk on a 1GB LAN:
Win 7 client:
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
From 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
Win 7 multi threaded:
listing \\nas\Public\David\Remote Stocks: 0.031s
listing \\nas\Public\David\Remote Stocks\Animals: 0.063s
listing \\nas\Public\David\Remote Stocks\album: 0.094s
listing \\nas\Public\David\Remote Stocks\.jalbum: 0.125s
listing \\nas\Public\David\Remote Stocks\Sports: 0.219s
listing \\nas\Public\David\Remote Stocks\album\Animals: 0.234s
listing \\nas\Public\David\Remote Stocks\Scenic: 0.328s
listing \\nas\Public\David\Remote Stocks\Animals\.jalbum: 0.328s
listing \\nas\Public\David\Remote Stocks\People: 0.359s
listing \\nas\Public\David\Remote Stocks\album\Animals\thumbs: 0.421s
listing \\nas\Public\David\Remote Stocks\Animals\.jalbum\thumbs: 0.468s
listing \\nas\Public\David\Remote Stocks\album\Animals\slides: 0.468s
listing \\nas\Public\David\Remote Stocks\album\Sports: 0.577s
listing \\nas\Public\David\Remote Stocks\Sports\.jalbum: 0.765s
listing \\nas\Public\David\Remote Stocks\People\.jalbum: 0.874s
listing \\nas\Public\David\Remote Stocks\album\Sports\thumbs: 0.921s
listing \\nas\Public\David\Remote Stocks\Scenic\.jalbum: 1.014s
listing \\nas\Public\David\Remote Stocks\album\Animals\res: 1.061s
listing \\nas\Public\David\Remote Stocks\album\res: 1.061s
listing \\nas\Public\David\Remote Stocks\album\Sports\slides: 1.139s
listing \\nas\Public\David\Remote Stocks\Sports\.jalbum\thumbs: 1.233s
listing \\nas\Public\David\Remote Stocks\album\Scenic: 1.295s
listing \\nas\Public\David\Remote Stocks\Scenic\.jalbum\thumbs: 1.482s
listing \\nas\Public\David\Remote Stocks\album\Scenic\thumbs: 1.779s
listing \\nas\Public\David\Remote Stocks\album\People: 1.81s
listing \\nas\Public\David\Remote Stocks\album\Sports\res: 1.825s
listing \\nas\Public\David\Remote Stocks\album\Scenic\slides: 2.013s
listing \\nas\Public\David\Remote Stocks\album\People\thumbs: 2.293s
listing \\nas\Public\David\Remote Stocks\album\People\slides: 2.496s
listing \\nas\Public\David\Remote Stocks\album\Scenic\res: 2.73s
listing \\nas\Public\David\Remote Stocks\album\People\res: 3.136s
As you can see get 3 times better performance on Windows by using a multithreaded file listing (from 9 to 3 seconds), but that is still way from the 0.1s measured when listing the same folder tree from MacBook Pro client. Something seems seriously wrong with the combination Java File.listFiles() on a SAMBA mounted folder from a Win7 client. The slowness renders the usage of jAlbum with images stored on NAS devices impossible.
Customers using network drives (NAS) sometimes report extremely slow performance when using Java software jAlbum. Have narrowed this down to the File.listFiles() call. It seems to behave almost 100 times slower on a Win 7 client than on a Mac client (using either Java 6 or your Java 7). On a Win XP client, the performance is decent. A pure folder copy operation by dragging and dropping a network mounted folder to a local disk is far faster. Therefore suspect that something in how Java interacts with the file system on Win 7 is responsible.
Here are some timings listing 31 folders mounted on a "QNAP" network disk on a 1GB LAN:
Win 7 client:
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
From 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
Win 7 multi threaded:
listing \\nas\Public\David\Remote Stocks: 0.031s
listing \\nas\Public\David\Remote Stocks\Animals: 0.063s
listing \\nas\Public\David\Remote Stocks\album: 0.094s
listing \\nas\Public\David\Remote Stocks\.jalbum: 0.125s
listing \\nas\Public\David\Remote Stocks\Sports: 0.219s
listing \\nas\Public\David\Remote Stocks\album\Animals: 0.234s
listing \\nas\Public\David\Remote Stocks\Scenic: 0.328s
listing \\nas\Public\David\Remote Stocks\Animals\.jalbum: 0.328s
listing \\nas\Public\David\Remote Stocks\People: 0.359s
listing \\nas\Public\David\Remote Stocks\album\Animals\thumbs: 0.421s
listing \\nas\Public\David\Remote Stocks\Animals\.jalbum\thumbs: 0.468s
listing \\nas\Public\David\Remote Stocks\album\Animals\slides: 0.468s
listing \\nas\Public\David\Remote Stocks\album\Sports: 0.577s
listing \\nas\Public\David\Remote Stocks\Sports\.jalbum: 0.765s
listing \\nas\Public\David\Remote Stocks\People\.jalbum: 0.874s
listing \\nas\Public\David\Remote Stocks\album\Sports\thumbs: 0.921s
listing \\nas\Public\David\Remote Stocks\Scenic\.jalbum: 1.014s
listing \\nas\Public\David\Remote Stocks\album\Animals\res: 1.061s
listing \\nas\Public\David\Remote Stocks\album\res: 1.061s
listing \\nas\Public\David\Remote Stocks\album\Sports\slides: 1.139s
listing \\nas\Public\David\Remote Stocks\Sports\.jalbum\thumbs: 1.233s
listing \\nas\Public\David\Remote Stocks\album\Scenic: 1.295s
listing \\nas\Public\David\Remote Stocks\Scenic\.jalbum\thumbs: 1.482s
listing \\nas\Public\David\Remote Stocks\album\Scenic\thumbs: 1.779s
listing \\nas\Public\David\Remote Stocks\album\People: 1.81s
listing \\nas\Public\David\Remote Stocks\album\Sports\res: 1.825s
listing \\nas\Public\David\Remote Stocks\album\Scenic\slides: 2.013s
listing \\nas\Public\David\Remote Stocks\album\People\thumbs: 2.293s
listing \\nas\Public\David\Remote Stocks\album\People\slides: 2.496s
listing \\nas\Public\David\Remote Stocks\album\Scenic\res: 2.73s
listing \\nas\Public\David\Remote Stocks\album\People\res: 3.136s
As you can see get 3 times better performance on Windows by using a multithreaded file listing (from 9 to 3 seconds), but that is still way from the 0.1s measured when listing the same folder tree from MacBook Pro client. Something seems seriously wrong with the combination Java File.listFiles() on a SAMBA mounted folder from a Win7 client. The slowness renders the usage of jAlbum with images stored on NAS devices impossible.