start(); $xml = domdocument::load("root.xml"); $xslno = domdocument::load("xslt-no.xsl"); $xsl0 = new xsltprocessor(); $xsl0->importStylesheet($xslno); $xslonly = domdocument::load("xslt-only.xsl"); $xsl1 = new xsltprocessor(); $xsl1->importStylesheet($xslonly); $xslphp = domdocument::load("xslt-php.xsl"); $xsl2 = new xsltprocessor(); $xsl2->registerPhpFunctions(); $xsl2->importStylesheet($xslphp); $xslphpuser = domdocument::load("xslt-php-userland.xsl"); $xsl3 = new xsltprocessor(); $xsl3->registerPhpFunctions(); $xsl3->importStylesheet($xslphpuser); $timer->setMarker("after importing"); for ($i= 0; $i < $max; $i++) { $xsl0->transformToDoc($xml); } $timer->setMarker("xslt nofunc"); for ($i= 0; $i < $max; $i++) { $xsl1->transformToDoc($xml); } $timer->setMarker("xslt only"); for ($i= 0; $i < $max; $i++) { $xsl2->transformToDoc($xml); } $timer->setMarker("xslt php"); for ($i= 0; $i < $max; $i++) { $xsl3->transformToDoc($xml); } $timer->setMarker("xslt php user"); $timer->stop(); $prof = $timer->getProfiling(); foreach($prof as $val) { if ($val['name'] == 'Stop') { continue; } print $val["name"]; print "\t"; if ($val['name'] == 'xslt nofunc') { $notime = ($val['diff']/100/$max) * 1000; } print round($val["diff"] * 1000) ." ms"; $percall = ($val["diff"]/100/$max) * 1000; print "\t"; print round($percall,3) . " ms"; print "\t"; print round($percall - $notime,3) . " ms"; print "\n"; } function userland($value) { return substr($value,0,5); }