[ 
https://issues.apache.org/jira/browse/NET-455?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sebb updated NET-455:
---------------------

    Description: 
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...

  was:
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...

    
> 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