В этой теме будут собираться советы и хаки по оптимизации скорости работы программы.
Некоторые из них могут показаться для хорошо знающих программирование и php банальными, другие нет. (Другие могут показаться ненормальными)
Хочу отметить, что указанные данные справедливы для PQEngine 0.5.1 (PHP 7.0.4). Т.е., по сути, данные советы являются верными для текущей версии. В будущем ситуация может измениться.
Несколько советов от меня:
- and, or vs &&, || Хотя [i]and и or[/i] более понятны при чтении, заменив их на [i]&& и ||[/i], можно получить некоторый выигрыш в производительности.Учтите, что эти операторы имеют отличия в приоритете выполнения.Тесты показали увеличение производительности на [b]15% - 250%[/b] (в зависимости от типов)
- $i++, $i-- vs ++$i, --$i Здесь ситуация более спорная и в первую очередь надо уделить внимание разному стилю работы [i]++$i и $i++[/i]:[code=phpqt]$a = 0; $b = 0; $c = 0; $d = 0; $a += $c++; //0 $b += ++$d; //1[/code] Но в случае, когда от замены [i]$i-- на --$i[/i] не ломается логика программы, советую использовать второй вариант. Выигрыш от использования составляет около [b]60%[/b].
- Qt: методы[size=normal] vs [/size]свойства Многие параметры Qt виджета можно задать(и получить) либо обращением к свойству, либо вызовом метода:[code=phpqt]$title = $mainWindow->windowTitle(); $mainWindow->setGeometry($x, $y, $width, $height); $title = $mainWindow->windowTitle; $mainWindow->x = $x; $mainWindow->y = $y; $mainWindow->width = $width; $mainWindow->height = $height;[/code] И вариант с использованием свойств [b]всегда[/b] быстрее. Даже когда, как в примере выше, используется обращение к 4 свойствам вместо вызова одного метода. Здесь играет роль то, что на вызов функции и выход из нее также тратится время. +, [u]вероятно[/u], эти методы просто обращаются к тем же переменным(?). Однако стоит использовать [b]методы[/b], в том случае, когда виджет, с которым вы работаете, в данный момент виден пользователю (и при этом метод принимает более 1 аргумента). Иначе окно будет перемещаться по экрану сначала вправо(x), а уже потом на нужную позицию. В примере выше 4 свойства x, y, width, height быстрее setGeometry на [b]~440%[/b].