I'm not an HFS expert, but I've looked into NTFS and ext3 filesystems. It sounds like you should consider two things.
First,the ext2/3/4 file systems pre-allocate the areas on-disk for storing file metadata (permissions, ownership, the blocks or extents that make up the file's data). I don't think NTFS does. The equivalent of an ext3 "inode" is the $MFT record. It's my understanding that the $MFT records aren't necessarily already allocated when you create a file. $MFT can be grown if need be. It's much harder to increase the number of inodes in an ext2/3/4 filesystem.
I'm not privy to any NT internals, but everything reads like the $MFT records get created as needed, so you can have small files, directories, large files interspersed.
For BSD FFS style filesystems, which the ext2/3/4 filesystems most definitely are, a lot of though has gone into grouping on-disk inodes, and seperating directory files from inodes. A lot of though has gone into writing out directories and metadata both efficiently and safely. See: http://www.ece.cmu.edu/~ganger/papers/softupdates.pdf as an example.
Second, the data for small files are kept in the $MFT records, if I read things correctly. This isn't true of ext2/3/4, and that's why I mentioned above that small files and large files are treated a bit differently.
It sounds to me like NT (the operating system) is suffering from contention for $MFT. Directoies get updated, which is a $MFT record update. Small files get created, which is an $MFT update. The OS can't order reads and writes efficiently because all the metadata updates and the data writes all go to the same "file", $MFT.
But, like I said, just a guess. My knowledge of NTFS is mainly from reading, and only a very little from experimenting with it. You could double check my guess by seeing if HFT keeps "directories" seperate from "inodes" seperate from "file data". If it does, that might be a big hint.
Best Answer
I answer my own question : Yes, it's definitely slower.
I wrote a
C# Console Application
that creates many empty files in a folder and then randomly access them. Here is the results :Here is source code :