Насколько существенна такая оптимизация?

Feb 12, 2009 15:38

reset($aZoneIds);
while (list($key, $zoneId) = each($aZoneIds)) {...}

UPD - фрагмент из кода серьёзного ad-cервера. А люди, успешно занимающиеся рекламой, деньги считать умеют

UPD2 Разница между each и foreach таки нашлась:
Unless the array is referenced, foreach operates on a copy of the specified array and not the array itself.

Leave a comment

Comments 64

ИМХО max_m February 12 2009, 14:48:19 UTC
Если речь идет об reset, то это не оптимизация, а просто код, более устойчивый к ошибке. Потому что результат each() зависит от внутреннего указателя массива:

function b($a) {
while (list($key, $zoneId) = each($a)) {
echo $zoneId."\n";
}

}
$a = array(1,2);
each($a); // <-- смещаем указатель
b($a);
echo "-----\n";
$a = array(1,2);
b($a);

Код в ПХП5 выведет :
2
-----
1
2

если в функцию добавить первой строкой reset() то она всегда будет обходить все элементы массива.

Reply

Re: ИМХО dasbot February 12 2009, 14:53:09 UTC
речь не об этом.

Reply

Re: ИМХО nickodimm February 12 2009, 15:01:25 UTC
да, но чем родной foreach (array_expression as $key => $value) плох?

Reply

Re: ИМХО max_m February 12 2009, 15:03:17 UTC
ничем, имхо наоборот удобнее

Reply


(The comment has been removed)

dasbot February 12 2009, 15:33:12 UTC
ничем. Он плох как "оптимизация".

Reply

zerkms February 13 2009, 05:59:07 UTC
оптимизация нужна там, где нужна.
код плох сам по себе (автор не знал о других операторах)
как оптимизация он ни плох, ни хорош.
об оптимизации в отрыве от результатов профайлинга, озвучивания задачи и условий работы кода разговаривать вообще нельзя в принципе.

Reply

phorror February 13 2009, 07:20:15 UTC
вы говорите об одном и том же

Reply


sstrukster February 12 2009, 19:58:38 UTC
"А люди, успешно занимающиеся рекламой, деньги считать умеют" -- это сексуальные фантазии, в коде баннерок бывает _таааакое_...

Reply

sstrukster February 12 2009, 22:22:44 UTC
ad server принимает миллионы запросов на показы баннеров. критериев по таргетингу может быть очень много. GeoIP, возрастной, гендерный, тематический, социальный и тп.. Баннер - это от текстового ad до видео. успешные ad-сервера пытаются предсказать максимальную выгоду от направления траффика, для кого-то купленного, кому-то продаваемого. такое возможно при репотинге в реальном режиме времени, а значит, в итоге все заканчивается покупкой серьезных серверов.
А пользователь, если ему не покажут страницу в течении трёх секунд закрывает окно.. и все капипиталы улетают нах...
Принципиальная разница между баннером и страницей UI в том, что загрузку страницы сайта вы подождёте, а с баннером скажете "ой, ой, мы вам наш членобаннер не показали"?
Вопрос в том, при каких объемах данных надо шлифовать код до этих reset-each, когда есть чудесный foreach

Reply


zlobnyj_troll February 13 2009, 05:36:09 UTC
и что в этом коде такого?

Reply

phorror February 13 2009, 07:17:46 UTC
Ничего. Очередной малолетний дурачок, который взялся оптимизировать кавычки.

Reply


alex_ez February 13 2009, 13:26:50 UTC
перестаньте постить говно.

Reply

alex_ez February 13 2009, 14:01:56 UTC
что ты имеешь в виду?

Reply

alex_ez February 13 2009, 14:13:14 UTC
А что?) Страшно лицо открыть в сообществе, чтоли?)

Вопрос о том, что быстрее: foreach или while(each) - обсуждался миллион раз и тривиален. не говоря о том, что подключение к базе данных или чтение файла занимается значительно больше времени, чем разница между ними помноженная на 10 тысяч.
Это не открытие века, и не оптимизация. Это потеря времени, Вашего и, самое главное, нашего.

Reply

alex_ez February 13 2009, 14:16:38 UTC
самое главное, что я на 100% уверен - без большей части таких гениальных вайлов можно было обойтись.
а кроме того - тем более без пхп: ведь в нем такой медленный foreach!.. другие языки уже давно оптимизировали!

Reply


Leave a comment

Up