I've never worried much about such small amounts of time and so never looked much into it.
It does indeed seem to be related to how time is handled. eg. this on NTP (Network Time Protocol) http://php.net/microtime
All these timing scripts rely on microtime which relies on gettimebyday(2)
This can be inaccurate on servers that run ntp to syncronise the servers
And there's SNTP (Simple NTP), And Windows uses it's own version http://en.wikipedia.org/wiki/Network_Time_Protocol
Windows Time service
All Microsoft Windows versions since Windows 2000 and Windows XP include the Windows Time service ("W32Time"), which has the ability to sync the computer clock to an NTP server. The version in Windows 2000 and Windows XP only implements Simple NTP, and violates several aspects of the NTP version 3 standard. Beginning with Windows Server 2003 and Windows Vista, a compliant implementation of full NTP is included.[
When I did some code with microtime() a couples back there was more processing involved between "start" and "end".
Rubble's "exec" would also be more resource hungry than a simple for loop.
Maybe there's no way to test "fast" code accurately?