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


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 => files = ftpClient.listFiles("./", 
ftpFileFilter);
It takes about 90 seconds ...

the second one is ... nearly as simple as the first one : 
FTPFile []  allFilesListed = ftpClient.listFiles();
files = FTPFileFilterWithExtension.fastFilter(ftpFileFilter, allFilesListed);

The function FTPFileFilterWithExtension.fastFilter() call the same 
ftpFileFilter :

       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);
        }
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