Отслеживание времени выполнения сценария в PHP

Барьеры памяти не позволяют ЦП переупорядочивать доступ к объекту Element, который не использует блокировки, через доступ к структуре очереди (здесь реализованы с использованием индексов, но указатели одинаково жизнеспособны).

Используя вашу нумерацию, важно, чтобы (3) выполнялось между (2) и (4), и барьер памяти обеспечивает это.

Точный случай, о котором вы спрашиваете о (2) -vs- (3) в источнике, предотвращает умозрительную перезапись действительных данных при заполнении очереди (предлагаемый сайт перекрывается с действительными данными). Без барьера, даже если условие не выполнено, исходные данные будут восстановлены с точки зрения потока источника, промежуточные значения могут быть кратко видны потребителю.

268
задан Eric Leschinski 7 August 2014 в 10:21
поделиться

3 ответа

В unixoid системах (и в php 7 + в Windows также), можно использовать getrusage, как:

// Script start
$rustart = getrusage();

// Code ...

// Script end
function rutime($ru, $rus, $index) {
    return ($ru["ru_$index.tv_sec"]*1000 + intval($ru["ru_$index.tv_usec"]/1000))
     -  ($rus["ru_$index.tv_sec"]*1000 + intval($rus["ru_$index.tv_usec"]/1000));
}

$ru = getrusage();
echo "This process used " . rutime($ru, $rustart, "utime") .
    " ms for its computations\n";
echo "It spent " . rutime($ru, $rustart, "stime") .
    " ms in system calls\n";

Примечание, что Вы не должны вычислять различие при порождении php экземпляра для каждого теста.

214
ответ дан phihag 23 November 2019 в 02:21
поделиться

Я думаю, что необходимо посмотреть на xdebug. Профильные опции дадут Вам преимущество к знанию многих связанных с процессом объектов.

http://www.xdebug.org/

8
ответ дан Stewart Robinson 23 November 2019 в 02:21
поделиться

Самый дешевый и самый грязный способ сделать это, просто делают microtime(), заходит в места в Вашем коде, которого Вы хотите сравнить. Сделайте его правильно прежде и прямо после запросов базы данных, и просто удалить те продолжительности из остальной части Вашего времени выполнения сценария.

подсказка А: Ваше время выполнения PHP редко будет вещью, которая делает Ваш тайм-аут сценария. Если сценарий испытывает таймаут, это почти всегда будет вызовом к внешнему ресурсу.

документация микровремени PHP: http://us.php.net/microtime

8
ответ дан danieltalsky 23 November 2019 в 02:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: