ловля микросекунд

ONK

Пассивист PHPСluba
Setti

Ты будеш удивлён, но я как-то установил что краткая форма if - а работает медленнее полной (правда незначительно медленнее).
 

Demiurg

Guest
>Ты будеш удивлён, но я как-то установил что краткая форма if - а работает медленнее полной
как это было установлено ? на глаз ?

AlexKill, помоему первый вариант значительно проще.
 

Demiurg

Guest
а результаты тестов можно посмотреть ?
 

ONK

Пассивист PHPСluba
Старого теста ненашол, написал новый:

PHP:
<?php
class Time_mark{
	var $s_m;

	function Time_mark(){
		$this->s_m = explode(" ",microtime());
	}

	function current_time(){
		$prom = explode(" ",microtime());
		return ($prom[1] - $this->s_m[1]) + ($prom[0] - $this->s_m[0]);
	}
}
$my_mark = new Time_mark();
for($i=0;$i < 100000;$i++){

}
echo $calibr = $my_mark->current_time(),'<br>';



$my_mark = new Time_mark();
for($i=0;$i < 100000;$i++){
	if($i%2){
		$t = 1;
	}else{
		$t = 0;
	}
}
echo $my_mark->current_time() - $calibr,'<br>';

$my_mark = new Time_mark();
for($i=0;$i < 100000;$i++){
	$i%2?$t = 1:$t = 0;
}
echo $my_mark->current_time() - $calibr,'<br>';

$my_mark = new Time_mark();
for($i=0;$i < 100000;$i++){
	$t = $i%2?1:0;
}
echo $my_mark->current_time() - $calibr,'<br>';
?>
У меня результат такой:

0.076538
0.079341
0.106133
0.09418

Из него можно сделать вывод, что краткий синтаксис работает на 15 - 25% медленнее.
 

Verk

Guest
to ONK

Это результаты твоего теста на моем компе. Уж сильно они плавают, на таких данных выводы делать я бы не стал.

0.135076
0.149414
0.129345
0.124478

0.145288
0.133469
0.12283
0.112887
 

ONK

Пассивист PHPСluba
Verk, Плавают от того что низкий приоритет исполнения процесса, присвой приоритет реального времени, плавать будет последний знак.

А в остальном согласен, я тестировал только на w2000 и вполне вероятно что на *unix сервере всё будет подругому (как с константами), да и разница вобщемто незначительна.
 

ONK

Пассивист PHPСluba
С ab ты никогда не получиш на столько точных и стабильных результатов. ab хорошо для тестирования реального времени затраченного сервером на все этапы исполнения скрипта, обычно это > чем на 20% больше того что удаётся намерить встроенными в скрипт счётчиками.
 

Demiurg

Guest
где ты видишь стабильные результаты ?
ab усредняет, и за счет этого результат как раз получается стабильный.
если тебе надо исключить время парсинга и прочего:

if($_GET['test']==1)
{
// сдесь тестируемый код
}

потом запускаем 2 раза ab: один раз ?test=0 второй ?test=1, разница и будет искомое время выполнения.
 

ONK

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

tony2001

TeaM PHPClub
xdebug.derickrethans.nl включает в себя профайлинг кода.

ONK:
много текста и мало осмысленного содержания.
 

ONK

Пассивист PHPСluba
Не спорю, содержания мало. Надо было просто не отвечать Demiurg - у.
xdebug.derickrethans.nl включает в себя профайлинг кода.
Тормозит исполнение скрипта больше чем в 2 раза, хотя для профилирования не принципиально.
 

tony2001

TeaM PHPClub
>Надо было просто не отвечать Demiurg - у.
угу, особенно, если не слишком в этом разбираешься.
хорошо, что Демиург не любит флеймить...

>Тормозит исполнение скрипта больше чем в 2 раза, хотя для профилирования не принципиально.
сомнительное утверждение.
хотя, если эти цифры получены вышеописанными методами, то вместо 2-х раз может быть и 222-раза.
 
Сверху