Я создал класс тестов, который позволяет пользователю вставлять, например
$timer->checkpoint('1'); проверить код на время, потребление памяти и т. д. и в конце кода, если он / она хочет проверить это, он / она должен вставить
 $result=$timer->result(); 
это дает некоторые данные для результата публичной функции (), например, использования памяти (с использованием memory_get_peak_usage) и времени (microtime ()).
Все это прекрасно для меня.
Но как я могу использовать комбинацию существующих встроенных функций php для получения значения, которое можно считать потреблением процессора ?
Было довольно легко подсчитать, сколько времени было потрачено на определенный фрагмент кода, используя встроенные функции, но у меня возникли проблемы с мыслью о том, как получить потребление ЦП для определенного фрагмента кода.
Ненавижу, чтобы ответить на мой собственный вопрос, но я провел много исследований, и здесь я иду … В основном, что я сделал, это …
  $dat=getrusage(); foreach ($dat as $key => $val) { $usertime= $dat['ru_utime.tv_usec']; $systemtime= $dat['ru_stime.tv_usec']; $finalresultcpu= ($systemtime + $usertime); } $this->_cpuTrackers[$name]=$finalresultcpu; return $this; } 
Как вы можете видеть, я использовал встроенную функцию getrusage php. Который выдает массив с целым рядом сведений, из которых большинство было для меня совершенно бесполезным, за исключением ru_utime.tv_usec (пользовательское время) и ru_stime.tv_usec (системное время). Чтобы узнать, сколько энергии процессора потребляется, нам нужно посмотреть значения «пользовательское время» и «системное время», и, как вы можете видеть в коде, добавьте его, чтобы получить время, которое на самом деле является использованием процессора.
 function cpu_usage(){ static $R=0; $r=$R; $R=getrusage(); $R= $R['ru_utime.tv_sec']*1000000+$R['ru_utime.tv_usec']+ $R['ru_stime.tv_sec']*1000000+$R['ru_stime.tv_usec']; return $R-$r; } 
Применение:
 cpu_time(); // optionally initiating, to measure time from this point, // not from the script's beginning // doing some stuff here echo cpu_time()." elapsed\n"; // doing yet some stuff here echo cpu_time()." elapsed\n"; 
  В простых случаях он дает то же самое, что и microtime , но с меньшей точностью.  Та же функция для microtime : 
 function stopwatch(){ static $time=0; $prev=$time; $time=microtime(true); return $time-$prev; } 
Грубо, не использовать так:
 stopwatch(); f(); // some function, which calls `stopwatch` in itself too echo stopwatch();