[ 
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

        

Reply via email to