Bench-marking cfdirectory v. java.io.file
Today I’m working on decreasing execution time on a script that does a couple DB querys and cfdirectory lists. After some preliminary testing my gut perception has proven true; the exorbinate execution time is due to cfdirectory.
So I set out to find a faster way of getting file information from directories and sure enough taking things back to Java is the way to go. See my benchmark code below and the results. I’m sure you’ll agree.
// UNC path to look in
curDir = '\myuncpath';
// ftime will hold the execution time
// fio is our java.io.File object
ftime = gettickcount();
fio = createObject('java','java.io.File');
mylist = fio.init(trim(curDir)).list();
ftime = gettickcount() - ftime;
I run the exact same thing in cfdirectory (tumblr strips cfml tags from posts or i”d post that here too). The results in my case show: files: 3409, ftime: 31, dtime: 17608.
That’s 3409 files. Java returns a list of names in 31ms while cfdirectory does the same in 17.5 seconds.
CF, java.io.File

[...] Look below for a little function I wrote to convert an array to a query. I had to write this to allow for my use of java.io.File.list() rather than cfdirectory due to speed limitations of the latter. More on that with benchmarks later here. [...]