On 10/27/2011 06:07 AM, Alan Bateman wrote:
On 27/10/2011 00:19, Xueming Shen wrote:
:
Here are the "surprising" results.
"nio" is the walkFileTree,
"io" is the File.list()
"io2" is the File.listFiles().
The nio's File.walkFileTree is 15 times faster than the "traditional"
recursion+File.list().
wow!
At least for your testing on Linux then if you run with strace then it
should become clear. The ioIter and ioIter2 methods in the test result
in each file being stat'ed 3 times whereas with walkFileTree it is
using Files.readAttributes to attributes in bulk (so one stat per file).
In any case, this is all good work. One suggestion is to consider not
introducing a -T<n> or whatever option but instead default to using a
pipeline that has the right number of threads to work very fast in
most cases. I'm just thinking of jar tasks in ANT or shell scripts
where you wouldn't want to hard code a thread count.
-T is simply here to help measure the performance under different thread
number. Agreed
that this thing should work by default.
-Sherman