[Moscow.pm] Оптимизация

Ivan B. Serezhkin ivan на serezhkin.com
Чт Дек 6 02:13:27 PST 2007


Монашёв Михаил wrote:
> Здравствуйте, Денис.
>
> Очевидно, что делать my в цикле медленнее, чем сделать my единожды.
>   
Да в любой хорошей книжке про программирование говорится, что в цикле 
надо делать как можно меньше.
даже обращений к массиву, которые сами по себе выполняются за 
константное маленькое время.
Также не надо забывать что у процессора есть кэш и он маленький, а в 
память ломится - это тактов 50, не меньше.
Так что в большом цикле, желательно иметь всё под рукой, чтоб в L2 кэш 
влезло, хотя с перлом ... сложно это с перлом.
>   
>> Я провёл тестирование и наткнулся на интересный момент.
>> Простой перебор хеша с помощью each можно ускорить на 12-15%
>>     
>
>   
>> Запись, которую обычно используют:
>> while(my($key, $value) = each %hash)
>> {
>> }
>>     
>
>   
>> Полностью аналогичная запись:
>> {
>> ═══ my($key, $value);
>> ═══ while(($key, $value) = each %hash)
>> ═══ {
>> ═══ }
>> }
>>     
>
>   
>> во втором случае мы получаем прирост производительности оставляя
>> при этом туже область видимости, что и в первом. 
>>     
>
>
>
>   


-- 
Ivan B. Serezhkin



Подробная информация о списке рассылки Moscow-pm