on Linux, using various benchmark tools (bonnie++, iozone, etc) on ext4 (but i guess it's the same on other FS), rewrite is always slower than write to new files.
For example, using bonnie++, with 24GB files (host with 12GB), block write is 167MB/s when rewrite is 64MB/s.
So it seems to me that rewrite is always slower than write. What could explain this ? Internal FS operations (free old blocks, allocate new ones ?) ? RAID design ? Thank you.
If the benchmark I/O is not aligned with the underlying OS and driver block sizes, then a rewrite can involve reading one or more blocks merging the new data and then rewriting.
If you are certain that this is not happening (as it does not on new files) then it is possible that some journalling is affecting performance. There should not be any block allocation taking place as the file has already been allocated.
Of course, an SSD volume will experience different behaviour as block movement could take place to assist with wear management.