tags
* with a CSS class of 'profiler'.
*
* @param string $label A label for the time mark
*
* @return string Mark enclosed in
tags
*
* @since 11.1
*/
public function mark($label)
{
$current = self::getmicrotime() - $this->_start;
if (function_exists('memory_get_usage')) {
$current_mem = memory_get_usage() / 1048576;
$mark = sprintf(
'%s %.3f seconds (+%.3f); %0.2f MB (%s%0.3f) - %s
',
$this->_prefix,
$current,
$current - $this->_previous_time,
$current_mem,
($current_mem > $this->_previous_mem) ? '+' : '',
$current_mem - $this->_previous_mem,
$label
);
}
else {
$mark = sprintf(
'%s %.3f seconds (+%.3f) - %s
',
$this->_prefix,
$current,
$current - $this->_previous_time,
$label
);
}
$this->_previous_time = $current;
$this->_previous_mem = $current_mem;
$this->_buffer[] = $mark;
return $mark;
}
/**
* Get the current time.
*
* @return float The current time
* @since 11.1
*/
public static function getmicrotime()
{
list($usec, $sec) = explode(' ', microtime());
return ((float)$usec + (float)$sec);
}
/**
* Get information about current memory usage.
*
* @return integer The memory usage
*
* @link PHP_MANUAL#memory_get_usage
* @since 11.1
*/
public function getMemory()
{
if (function_exists('memory_get_usage')) {
return memory_get_usage();
}
else {
// Initialise variables.
$output = array();
$pid = getmypid();
if ($this->_iswin) {
// Windows workaround
@exec('tasklist /FI "PID eq ' . $pid . '" /FO LIST', $output);
if (!isset($output[5])) {
$output[5] = null;
}
return substr($output[5], strpos($output[5], ':') + 1);
}
else {
@exec("ps -o rss -p $pid", $output);
return $output[1] *1024;
}
}
}
/**
* Get all profiler marks.
*
* Returns an array of all marks created since the Profiler object
* was instantiated. Marks are strings as per {@link JProfiler::mark()}.
*
* @return array Array of profiler marks
*/
public function getBuffer()
{
return $this->_buffer;
}
}