[
https://issues.apache.org/jira/browse/NET-455?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13239370#comment-13239370
]
Nicolas commented on NET-455:
-----------------------------
I did few tests !
I confirm that
{code} files = ftpClient.listFiles("./", ftpFileFilter); {code}
is slower than
{code} files = ftpClient.listFiles(null, ftpFileFilter); {code}
In mys tests, the first case took 3min05sec and the second one took 17 sec
However, this happens on a wuFTP Server 2.6.1 and can't be reproduced on a
vsFTP Server. Maybe it's wuFTP related...
I tested
{code} files = ftpClient.listFiles(".", ftpFileFilter); {code} and it's as fast
the null parameter (17sec). I don't know why listFiles "./" is slow on wuFTP.
And of course, the manual filter with the ArrayList took 17.2/17.3 seconds
(make sense after looking code).
I think this issue can be closed, however people have to remember to not use
"./" with wuftp !
> FTPClient listFiles(FTPFileFilter) can be faster...
> ---------------------------------------------------
>
> Key: NET-455
> URL: https://issues.apache.org/jira/browse/NET-455
> Project: Commons Net
> Issue Type: Improvement
> Components: FTP
> Affects Versions: 3.0.1
> Environment: all
> Reporter: Nicolas
> Priority: Minor
> Labels: ftpclient, listFiles
> Original Estimate: 1h
> Remaining Estimate: 1h
>
> I tested two ways of sorting files on a remote FTP server with many files ( >
> 110 000). Both of these use the FtpFileFilter class (with a test on the
> extension filename... very simple).
> The first one is the conventionnal =>
> {code}
> files = ftpClient.listFiles("./", ftpFileFilter);
> {code}
> It takes about 90 seconds ...
> the second one is ... nearly as simple as the first one :
> {code}
> FTPFile [] allFilesListed = ftpClient.listFiles();
> files = FTPFileFilterWithExtension.fastFilter(ftpFileFilter, allFilesListed);
> {code}
> The function FTPFileFilterWithExtension.fastFilter() call the same
> ftpFileFilter :
> {code}
> public static FTPFile [] fastFilter(FTPFileFilter filter, FTPFile
> ftpFileArray []) {
> ArrayList<FTPFile> listOfFTPFiles = new ArrayList<FTPFile>();
> for (FTPFile ftpf : ftpFileArray) {
> boolean accepted = filter.accept(ftpf);
> if (accepted) {
> listOfFTPFiles.add(ftpf);
> }
> }
> FTPFile resultArray [] = new FTPFile[listOfFTPFiles.size()];
> return listOfFTPFiles.toArray(resultArray);
> }
> {code}
> The second method is EIGHT times faster than the first one ... and I don't
> really understand why...
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira