* Fix ::close()
* Properly deal with "-setup" and "-total" * Extend time functions a bit
This commit is contained in:
parent
70c5b8cf42
commit
00c6a58707
1 changed files with 25 additions and 4 deletions
|
|
@ -9,6 +9,23 @@
|
|||
* @package MediaWiki
|
||||
*/
|
||||
class ProfilerSimple extends Profiler {
|
||||
function ProfilerSimple() {
|
||||
global $wgRequestTime,$wgRUstart;
|
||||
if (!empty($wgRequestTime) && !empty($wgRUstart)) {
|
||||
$this->mWorkStack[] = array( '-total', 0, $this->getTime($wgRequestTime),$this->getCpuTime($wgRUstart));
|
||||
|
||||
$elapsedcpu = $this->getCpuTime() - $this->getCpuTime($wgRUstart);
|
||||
$elapsedreal = $this->getTime() - $this->getTime($wgRequestTime);
|
||||
|
||||
$entry =& $this->mCollated["-setup"];
|
||||
$entry['cpu'] += $elapsedcpu;
|
||||
$entry['cpu_sq'] += $elapsedcpu*$elapsedcpu;
|
||||
$entry['real'] += $elapsedreal;
|
||||
$entry['real_sq'] += $elapsedreal*$elapsedreal;
|
||||
$entry['count']++;
|
||||
}
|
||||
}
|
||||
|
||||
function profileIn($functionname) {
|
||||
global $wgDebugFunctionEntry;
|
||||
if ($wgDebugFunctionEntry && function_exists('wfDebug')) {
|
||||
|
|
@ -33,6 +50,7 @@ class ProfilerSimple extends Profiler {
|
|||
} else {
|
||||
if ($functionname == 'close') {
|
||||
$message = "Profile section ended by close(): {$ofname}";
|
||||
$functionname = $ofname;
|
||||
wfDebug( "$message\n" );
|
||||
}
|
||||
elseif ($ofname != $functionname) {
|
||||
|
|
@ -57,13 +75,16 @@ class ProfilerSimple extends Profiler {
|
|||
/* Implement in output subclasses */
|
||||
}
|
||||
|
||||
function getCpuTime() {
|
||||
$ru=getrusage();
|
||||
function getCpuTime($ru=null) {
|
||||
if ($ru==null)
|
||||
$ru=getrusage();
|
||||
return ($ru['ru_utime.tv_sec']+$ru['ru_stime.tv_sec']+($ru['ru_utime.tv_usec']+$ru['ru_stime.tv_usec'])*1e-6);
|
||||
}
|
||||
|
||||
function getTime() {
|
||||
list($a,$b)=explode(" ",microtime());
|
||||
function getTime($time=null) {
|
||||
if ($time==null)
|
||||
$time=microtime();
|
||||
list($a,$b)=explode(" ",$time);
|
||||
return (float)($a+$b);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue