[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сравнение циклов. Пофлеймим? =)
McLotos
В общем я думал как максимально оптимизировать свой код и решил поискать проблему в цикле for, который есть практически в каждом скрипте (а то и не по одному разу)
Нашел вот такую статейку. Мысли идеи?

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Invis1ble
мысли одни - хватит уже экономить на спичках, используй то, что удобней в конкретном случае
исключение может быть в случае разработки заведомо узкого участка системы (открою секрет, в 99.9% случаев узкое место - не циклы)

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

chee
McLotos, это преждевременная оптимизация, если хочешь повышать производительность своего кода, то установи профилировщик, найди ресурсо затратные места в коде. И я заверю тебя в том, что это не будут for, foreach.


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
chee
Цитата
McLotos, это преждевременная оптимизация

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

Допустим для разбора массива оптимальнее всего foreach(), для того он и придуман. Для счетчиков - for(), форечу там делать нечего. Где то очень полезен do... while. Так что прав Invis1ble, всему свое место, и будет производительность.


А понабарагозить ерунды и потом разгребать профилировщиком, это не наш метод. smile.gif

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
sergeiss
McLotos, а ты сам запускал этот код? У меня результаты получаются совсем другими:

результаты измерений
time1: 0.0289 s
time2: 0.0282 s
time3: 0.0208 s
time1 - time2: 2.42 %
time2 - time3: 26.24 %

time1: 0.0326 s
time2: 0.0282 s
time3: 0.0224 s
time1 - time2: 13.5 %
time2 - time3: 20.57 %

time1: 0.0284 s
time2: 0.0311 s
time3: 0.0221 s
time1 - time2: -9.51 %
time2 - time3: 28.94 %

time1: 0.0275 s
time2: 0.0291 s
time3: 0.022 s
time1 - time2: -5.82 %
time2 - time3: 24.4 %

То есть, foreach получается совсем чуть-чуть быстрее, чем другие циклы. А вот for и while показывают практически идентичные результаты. То один чуть быстрее, то другой, и очень мало отличаются.

Так что выводы очень простые:
1. Результаты эксперимента не воспроизводятся в других условиях - методику "ФФ топку".
2. Нефиг "экономить на спичках" smile.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
inpost
А как насчёт версия PHP? Обещают, что в PHP7 всё будет совсем иначе, а это, как ни как, через пол годика всего.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
stump
Можно попробовать поработать с объектами - это должно привести к уменьшению количества циклов.

А с другой стороны: как экономить на спичках если пользуешься зажигалкой?

_____________
Трус не играет в хокей
Hello
Цитата (McLotos @ 28.02.2015 - 08:04)
Нашел вот такую статейку. Мысли идеи?

Только эмоции
Цитата
16 Апрель 2008


_____________
VPS от 5$, первые 2 месяца - бесплатно.
stump
for ($i = 0; $i < $iN; $i++){
$res *= $a[i];
}

=>
for ($i = 0; $i < $iN; $i+=3){
$res1 *= $a[i];
$res2 *= $a[i+1];
$res3 *= $a[i+2];
}

$res = $res1 * $res2 * $res3;


Как такая идея [habrahabr]?

_____________
Трус не играет в хокей
Hello
stump, ты статью из ссылки ТС читал?
Для массивов только foreach

_____________
VPS от 5$, первые 2 месяца - бесплатно.
stump
Цитата (Hello @ 3.03.2015 - 10:15)
stump, ты статью из ссылки ТС читал?
Для массивов только foreach

максимально оптимизировать свой код и решил поискать проблему в цикле for

_____________
Трус не играет в хокей
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.