A reaction to consult at pmkmedia dot com:
The negative results you are getting are due to your usage of microtime(). microtime() returns a string like this:
0.52234000 1122834868
First, the microseconds, then a space, and then a Unix Timestamp. A function like this corrects this:
<?php
function getmicrotime() {
list($usec, $sec) = explode(' ', microtime());
return ((float)$usec + (float)$sec);
}
$first = getmicrotime();
echo 'parsetime: '.(getmicrotime()-$first);
?>
Then you won't get any negative parsetimes.