2013-09-12 3 views
1

Я всегда смотрю, как оптимизировать код все больше и больше каждый день, и как я могу научиться кодировать более быстрый код.Микро-оптимизация оператора IF

Глядя на некоторые мини-JS онлайн, я замечаю изменение нескольких IF в заявлении, и я подумал, что может быть очень хорошей идеей начать использовать его в PHP.

<?php 
if(!isset($myVar) || $myVar == 'val'){ 
    $myVar = 'oldVal'; 
} 
if(isset($myVar2) && $myVar2 == 'oldVal'){ 
    $myVar2 = 'newVal'; 
} 
?> 

в

<?php 
(!isset($myVar) || $myVar == 'val') && $myVar = 'oldVal'; 
isset($myVar2) && $myVar2 == 'oldVal' && $myVar2 = 'newVal'; 
?> 

Как мне нравится новый синтаксис, я начал использовать его все больше и больше думать, чтобы сэкономить время обработки, но действительно ли я сохранить любой или нет никакой разницы внутри между два ?

(Пример кода является лишь примером, чтобы показывать только технику)

+0

Название вопроса противоречит вопросу. Вы не можете сделать свой код быстрее с микро-оптимизацией. –

+0

вы профилировали свой код? – hek2mgl

+3

Как правило, я следую за этим, это не стоит для микро-оптимизации так, если код становится трудно читать. Я не мог сразу сказать, что сделал «после», но я понял код «до» сразу с места. Вы можете взглянуть на [этот вопрос] (http://stackoverflow.com/q/4236533/899126), в котором также говорится о микро-оптимизации в PHP. –

ответ

2

Я использовал этот код для профилирования оба подхода:

<?php 

$iterations = 1000000; 
$startTime = microtime(true); 

$i = 0; 
while(++$i < $iterations) { 
    if(!isset($myVar) || $myVar == 'val'){ 
     $myVar = 'oldVal'; 
    } 
    if(isset($myVar) && $myVar == 'oldVal'){ 
     $myVar = 'newVal'; 
    } 
} 

echo 'First Running Time: ' . (microtime(true) - $startTime) . "\n"; 


$startTime = microtime(true); 
$i = 0; 
while(++$i < $iterations) { 
    (!isset($myVar) || $myVar == 'val') && $myVar = 'oldVal'; 
    isset($myVar) && $myVar == 'oldVal' && $myVar = 'newVal'; 
} 

echo 'Second Running Time: ' . (microtime(true) - $startTime) . "\n"; 

Результатов:

(1-й Пробег)

Первый рабочий день: 0.38401508331299

второй раз подряд: 0,40315389633179

(второй Run)

первый запуск: 0,38593697547913

второй раз подряд: 0,40187788009644

Заключение: Ваш метод медленнее, но сумма настолько мала, что даже если бы вы не были по-прежнему лучше писать более читаемый код.

+0

Хорошо. Тестирование, как это, как известно, было искаженным, возможно, памятью или использованием процессора в то время и т. д. ... Мой вопрос был более прямым для «Что делает PHP внутри?» – Fabrizio

Смежные вопросы