2013-02-12 5 views
0

У меня есть цикл, который нужно запустить несколько миллионов раз; 10 967 700, если быть точным. В этом, я делаю некоторые проверки, включая:Самый быстрый способ сравнить числа в php

номер 1 меньше, чем номер 2 номер 1 меньше или равно числу 3 номер 4 больше, чем номер 5

Я интересно, если есть любая оптимизация/твики, которые я могу выполнить, чтобы эти проверки выполнялись быстрее. Или это смехотворный квест?

+1

Мы могли бы дать вам несколько входов для оптимизации, если мы имели бы шансы увидеть код ... В противном случае общий '>' '<' '' === (и и так далее), вероятно, являются самыми быстрыми и единственными элементами сравнения. Вы также можете поэкспериментировать с различиями в производительности между if/else и switch/case. – wildhaber

+2

Убедитесь, что числа фактически являются целыми, а не строковыми представлениями. Необходимо сохранить несколько циклов при манипуляции типа. –

+0

Отличная точка Майк Б. В моем случае все целое. – onassar

ответ

0

По вашему сниппета я предлагаю вам следующие изменения:

Используйте for -loop вместо foreach, как этот пример:

$key = array_keys($aHash); 
$size = sizeOf($key); 
for ($i=0; $i<$size; $i++) $aHash[$key[$i]] .= "a"; 

Это foreach -loop является 4.7x медленнее. (Смотри пример в конце - http://www.phpbench.com/)

foreach($aHash as $key=>$val) $aHash[$key] .= "a";

Так же, как проверка значения, установлен empty() -метод немного быстрее, чем isset().

Использование if and elseif (using ===) также быстрее, чем (==)

Я надеюсь, что я мог бы помочь вам.

(Performance Источник: http://www.phpbench.com/)

+0

Я отдам это, но я не уверен, насколько он применим к циклу 'for', который у меня установлен. Если у вас есть пример использования переменных, я все уши. Я попробую. Благодарю. – onassar

+0

http://php.net/manual/en/control-structures.foreach.php сообщает, что структуры 'foreach' должны использоваться только с массивами и объектами – onassar

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