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.