Есть-ли разница по скорости в том, откуда мы достаем значение. Тоесть будет-ли работать $variable быстрее чем $arr[0][4][2]['variable'], при одинаковом количестве записанных данных в переменную?
Спустя 52 минуты, 49 секунд (29.09.2008 - 20:21) Vaska написал(а):
Если вопрос просто философский, то засеките время
Код |
<?php // это в самое начало кода define("START_TIME", microtime(true)); //Это в конец printf("Время работы скрипта: %.5f с", microtime(true) - START_TIME); ?> |
Если говорить о практическом значении, то не заморачивайтесь, разница в скорости минимальна
Спустя 10 часов, 58 минут, 34 секунды (30.09.2008 - 07:20) kirik написал(а):
2 Vaska, спасибо за ответ! Да, разница, даже если она есть, настолько мизерна, что ее не получится замерить. Просто было интересно есть-ли разница, в каком виде хранятся переменные в памяти и насколько разный алгоритм доступа к ним в этих двух случаях.
Спустя 38 минут, 53 секунды (30.09.2008 - 07:59) bvn написал(а):
я, если мне хочется замерить что-нибудь мизерное, организовываю циклы...
Спустя 18 минут, 7 секунд (30.09.2008 - 08:17) kirik написал(а):
bvn, хорошо.. Есть предложения как замерить разницу в скорости того, что описано выше?
Спустя 2 минуты, 41 секунда (30.09.2008 - 08:20) Vaska написал(а):
Цитата(kirik @ 30.9.2008, 9:17) [snapback]49663[/snapback]
bvn, хорошо.. Есть предложения как замерить разницу в скорости того, что описано выше?
Используй код, который я выше привел, между двумя строками кода поставь цикл в миллион итераций и замеряй
Спустя 27 минут, 36 секунд (30.09.2008 - 08:47) sergeiss написал(а):
Исходя из моих познаний в этой области... Разница должна быть. Потому что адрес переменной определяется просто смещением в области переменных, а адрес элемента массива состоит из адреса начального элемента (т.е., это то же смещение в области переменных), и затем еще вычисляется смещение конкретного элемента относительно начального элемента массива.
То есть, в случае с массивом определение адреса элемента занимает больше времени.
Хочу уточнить, что эти рассуждения абсолютно верны в случае, например, языка Си. Но и в ПХП, я думаю, всё обстоит точно также. Ибо никто не будет изобретать заново велосипед.
PS. В случае многомерного массива вычисление адреса элемента будет еще немного дольше.
То есть, в случае с массивом определение адреса элемента занимает больше времени.
Хочу уточнить, что эти рассуждения абсолютно верны в случае, например, языка Си. Но и в ПХП, я думаю, всё обстоит точно также. Ибо никто не будет изобретать заново велосипед.
PS. В случае многомерного массива вычисление адреса элемента будет еще немного дольше.
Спустя 51 минута (30.09.2008 - 09:38) Vaska написал(а):
Цитата(sergeiss @ 30.9.2008, 9:47) [snapback]49666[/snapback]
Исходя из моих познаний в этой области... Разница должна быть. Потому что адрес переменной определяется просто смещением в области переменных, а адрес элемента массива состоит из адреса начального элемента (т.е., это то же смещение в области переменных), и затем еще вычисляется смещение конкретного элемента относительно начального элемента массива.
То есть, в случае с массивом определение адреса элемента занимает больше времени.
Хочу уточнить, что эти рассуждения абсолютно верны в случае, например, языка Си. Но и в ПХП, я думаю, всё обстоит точно также. Ибо никто не будет изобретать заново велосипед.
PS. В случае многомерного массива вычисление адреса элемента будет еще немного дольше.
То есть, в случае с массивом определение адреса элемента занимает больше времени.
Хочу уточнить, что эти рассуждения абсолютно верны в случае, например, языка Си. Но и в ПХП, я думаю, всё обстоит точно также. Ибо никто не будет изобретать заново велосипед.
PS. В случае многомерного массива вычисление адреса элемента будет еще немного дольше.
Эмм... ты согласен, что разница в скорости будет настолько несущественна, что даже смысла замерять время работы скриптов с разными подходами нет?)))
Спустя 19 минут, 36 секунд (30.09.2008 - 09:58) linedmk написал(а):
Дык если нужен массив, то куда от этого денешся? чем его замениш? Изобретать непонятно что? Вот массив ненужно использовать вместо одной переменной. И замарачиваться имхо поэтому вопросу не стоит.
Спустя 7 минут, 6 секунд (30.09.2008 - 10:05) sergeiss написал(а):
Цитата(linedmk @ 30.9.2008, 10:58) [snapback]49680[/snapback]
Дык если нужен массив, то куда от этого денешся? чем его замениш? Изобретать непонятно что? Вот массив ненужно использовать вместо одной переменной. И замарачиваться имхо поэтому вопросу не стоит.
Ну почему же не стОит? (ударение тут ставим, я думаю?) Очень даже стОит. Хотя бы для лучшего понимания процессов. И вообще - наличие таких вопросов (в начале темы) говорит о том, что человек очень даже вдумчиво делает программы, а не бездумно "кОдит"
Я лично "за" такие вопросы. Чем их больше, тем лучше понимание. Я вот, например, не всё далеко знаю. Но вот один человек озадачиться подобным вопросом, я почитаю... И тоже умнее становлюсь.
Вывод: вопросам на понимание процессов - быть! (Точка. Печать. Вердикт окончательный и обсуждению не подлежит )
PS. Vaska - а я и не собирался никакие циклы писать в данном случае
Спустя 4 минуты, 8 секунд (30.09.2008 - 10:09) vasa_c написал(а):
Для замерения скорости есть профайлеры.
К сожалению, велосипед из жесткотипизированных языков не годится для слаботипизированных, где размеры элементов не фиксированы.
Так же велосипед для порядковых массивов не подходит для ассоциативных.
К тому же всё это сильно зависит от структуры массивов, от байткода который сгенерирует транслятор и много от чего.
В единичном случае, конечно фигня это полная, но в больших циклах лучше выносить такие значения. Можно даже ссылку использовать:
Цитата
Но и в ПХП, я думаю, всё обстоит точно также. Ибо никто не будет изобретать заново велосипед.
К сожалению, велосипед из жесткотипизированных языков не годится для слаботипизированных, где размеры элементов не фиксированы.
Так же велосипед для порядковых массивов не подходит для ассоциативных.
К тому же всё это сильно зависит от структуры массивов, от байткода который сгенерирует транслятор и много от чего.
В единичном случае, конечно фигня это полная, но в больших циклах лучше выносить такие значения. Можно даже ссылку использовать:
Код
$elem = &$A[0][1]['two']['three'];
for (...) {
$elem++;
}
for (...) {
$elem++;
}
Спустя 4 часа, 17 минут, 2 секунды (30.09.2008 - 14:26) linedmk написал(а):
Цитата(sergeiss @ 30.9.2008, 11:05) [snapback]49683[/snapback]
Цитата(linedmk @ 30.9.2008, 10:58) [snapback]49680[/snapback]
Дык если нужен массив, то куда от этого денешся? чем его замениш? Изобретать непонятно что? Вот массив ненужно использовать вместо одной переменной. И замарачиваться имхо поэтому вопросу не стоит.
Ну почему же не стОит? (ударение тут ставим, я думаю?) Очень даже стОит. Хотя бы для лучшего понимания процессов. И вообще - наличие таких вопросов (в начале темы) говорит о том, что человек очень даже вдумчиво делает программы, а не бездумно "кОдит"
Я лично "за" такие вопросы. Чем их больше, тем лучше понимание. Я вот, например, не всё далеко знаю. Но вот один человек озадачиться подобным вопросом, я почитаю... И тоже умнее становлюсь.
Вывод: вопросам на понимание процессов - быть! (Точка. Печать. Вердикт окончательный и обсуждению не подлежит )
PS. Vaska - а я и не собирался никакие циклы писать в данном случае
На счет "не стОит" - это вы правильно поняли ) На счет самой темы я ж тоже непротив, я только высказал свое мнение. Я тоже многого незнаю, но на этом форуме много чего полезного нашел К тому ж этот форум очень часто веселит!