Я микрооптимизирую эту функцию, и у меня возникла небольшая проблема, когда внутри цикла я проверяю, равно ли значение вне цикла 0, если это так, то вызываем функцию и аналогично вызываемую ею функцию. Как бы я его рефакторинг, чтобы не было условной логики (которая медленная) внутри этих циклов.
foreach($this->layer[$l]->objs as $obj)
{
//Horrific code to save 20ms :(
($l===0) ? $obj->myfunc_clean($var,$var2) : $obj->myfunc($var,$var2);
}
Мне нужно избавиться от условия $l===0
, потому что это условие в цикле из тысяч объектов значительно замедляет его. Также у меня есть функция, которая должна обрабатываться как обычно, но другая должна сбрасывать временные переменные, когда она заканчивается (на основании того, что l равно 0). Функция myfunc
также имеет цикл для еще большего числа объектов, поэтому мне приходится вызывать отдельные функции для сохранения еще более условной логики.
Примечание: Это может выглядеть как преждевременная оптимизация, но, поверьте, для моего приложения экономия одной миллисекунды может сэкономить драгоценные секунды (возможно, около 10000 итераций, если не больше). Поэтому, пожалуйста, никаких ответов о преждевременной оптимизации является корнем всего зла и еще много чего. Это, конечно, не преждевременно.