When copying, commons-io uses a local buffer:
http://svn.apache.org/viewvc/commons/proper/io/trunk/src/main/java/org/apache/commons/io/CopyUtils.java?view=markup
(search for DEFAULT_BUFFER_SIZE)
while Eclipse uses a static synchronized buffer that prevents concurrent copy operations:
http://dev.eclipse.org/viewcvs/viewvc.cgi/org.eclipse.core.resources/src/org/eclipse/core/internal/utils/FileUtil.java?view=markup
(search for buffer)
It seems like the static buffer may improve performance when coping small files sequentially but will degrade performance in parallel copy.
Does eclipse static synchronized buffer have real world performance improvements or it is just over-engineering?
What do you recommend using in this case?
It really makes no significant performance difference, and a static buffer is generally a really bad idea unless you know you are threadsafe. They did it (if you look at the comment) because they understand the synchronization in a higher level object.
So always just allocate a dynamic buffer.