Оптимизация кода. Время выполнения функций.

  • Автор темы Автор темы MishGUN
  • Дата начала Дата начала

MishGUN

Новичок
Оптимизация кода. Время выполнения функций.

Недавно задался вопросом о полной оптимизации кода. Уперся в то, что одну и ту же цель средствами РНР можно достичь разными путями. Например, операция сравнения: есть переменная $a=1 и есть массив числел, надо проверить входит ли $a в этот массив. Попробовал три способа - switch с перебором всех значений, in_array и простой перебор значений массива типа $a==$array[0] or $a==$array[1] or... И, что удивительно (для меня) количество кода обратно пропорционально зависит от скорости работы. Другими словами, switch дал самый маленький показатель времени выполнения, затем перебор и затем in_array. Казалось бы, написанные разработчиками языка функции должны работать быстро, но нет, в данном случае in_array работает в 2 раза дольше.

Это заставляет задуматься и приступить к поиску идеальных способов и для других целей. Искать самостоятельно будет достаточно сложно, поэтому хочется услышать от вас подобные примеры (если кто сталкивался с этим или хочет столкнуться). Таким образом, можно будет складывать на форуме большое множество примеров, что, думаю облегчит некоторым жизнь
 
И, что удивительно (для меня) количество кода обратно пропорционально зависит от скорости работы. Другими словами, switch дал самый маленький показатель времени выполнения, затем перебор и затем in_array. Казалось бы, написанные разработчиками языка функции должны работать быстро, но нет, в данном случае in_array работает в 2 раза дольше.
Тха ха ха! Зачот!
 
Есть над чем трудиться, переработай все функции РНР(написанные на более низкоуровневых языках, но более продуктивных) и создай свой модуль, получишь то за что боролся...
 
Причем здесь шутки? Я привел реальный пример. Кто сомневается, могу сорцы дать. Провел опыт, получил конкретные числа... Может я что-то в принципе не догоняю, но факт остается фактом... В конце концов, я не утверждаю, что это лучший пример.
Объясните мне тогда, почему так происходит. И почему свич нельзя использовать если он работает быстрее? Может быть хоть чему-то научусь
 
это ваще нереальный пример.
сколько времени у тебя выполняется этот свитч?
 
in_array - 0.0001060962677
switch - 4.79221343994E-005
Разница небольшая, но это только на элементарной функции
 
ну, давай, продемонстрируй нам не элементарную
 
Я к тому, что грубо говоря
неэлементарная=элемнтарная*N => время_сэкономленное_на_неэлементарной=время_сэкономленное_на_элементарной*N
 
ты попкой-то не виляй. приведи пример.
тоже, математик нашёлся.
 
SiMM
тут дело не в этом даже.
он сравнивает конструкцию языка с ран-тайм исполнением программы.

что быстрее - вычислить факториал многозначного числа или сразу вывести результат?
 
Что такое
in_array()=>function-на вход и выход которой используються команда(таже самая ссылка на метку,но...(я не знаю почему 2)) по 2 байта и воопще это значительное время, поту выберай без функций но быстро, или с красивым кодом(который твоим детям служить будет) и с маленькой потеряй памяти(я уверен ты на своем оптимизированом коде столько теряешь, что всё остальное мелочи)
switch=>php code просто с изменнеой симантикой низкоуровнего языка, а воопще это куча(низкоуровневых) условий, которые предпологают переход на определенную метку, эти команды воопще занимают мизер и считаються самыми скоростными не считая пустых команд nop.
 
Преждевременная оптимизация - корень всех зол (c) Д. Кнут
 
Сверху