I am using Java’s Arrays.sort() function to sort a list of files by their last modified time. The sort for 245 files is taking around 5 seconds. This seems too long to me. I feel it shouldn’t take more than 0.5 seconds. Is that a good assumption? What am I doing wrong? OR does this sound normal?
public static class LastModifiedComparator implements Comparator<File> {
@Override
public int compare(File f1, File f2) {
return (int)(f1.lastModified() - f2.lastModified());
}
}
File folder = new File( "C:\\Whatever\\" );
File[] filesInFolder = folder.listFiles();
logger.debug("Starting File Sort");
Arrays.sort(filesInFolder, new LastModifiedComparator());
logger.debug("Done File Sort");
Output in Log
2012-08-10 14:24:20,333 DEBUG http-8080-4 <ClassName>:73 - Starting File Sort
2012-08-10 14:24:25,915 DEBUG http-8080-4 <ClassName>:75 - Done File Sort
You will need to improve your
Comparatorlogic. You need to cache thelastModified()values because the implementation of that method is quite slow. I suggest wrapping theFileinstances into a comparable object of your making that will cache the value: