http://bugs.winehq.org/show_bug.cgi?id=14914
--- Comment #40 from Alex Y. Shalimov ashalimov@gmail.com 2010-07-07 08:55:42 --- Tested the same program on Linux. The results are quite predictable:
filetest2 (write-last-byte preallocation, random write) 131056 fragments. Run time 36 sec.
filetest2 -posix-prealloc (preallocation via posix_falloc, random write) 611 fragments (good). But run time was 6 min 52 sec! And preallocation didn't take much time; most of it was lost during write. I've tried to preallocate by first filling file sequentially and then performing random write, but run time was nearly identical (6 min 29 sec), as well as fragments number (617). For some reason it takes too long to overwrite already written data.
filetest2 -write-only -sequential-write (no preallocation, sequential write) 660 fragments, only 10 sec.
filetest2 -write-only (no preallocation, random write) 131069 fragments, 36 seconds. Linux is very predictable :-)
So, basically this version behaves like the previous one. Unfortunately, any attempts to preallocate space leads to insanely decreased write speed. Probably we'll have to deal with heavily fragmented files, unless someone knows any other way to preallocate file space. Or maybe ext3 is just plane bad, and we should move to something more advanced (there are enough alternatives). Thanks for reading!