3. Не кешируйте что либо в переменную, если оно используется один раз. Даже если оно сказывается на читаемости кода, лучше уж перенести на новую строку.
Я тут на днях оптимизировал алгоритм боидов, и мне мозолили глаза 10 локальных переменных. Так вот я и не нашел насколько тормозится программа при создании переменной в стеке. И где она объявляется? Таки в кэше процессора или в ОЗУ?
В C/C++ создание переменной на стеке(без инициализации) - сдвиг stack pointer на значение размера переменной, что по накладным расходам в конечном счете примерно ничего. Более того, компилятор достаточно умен, чтобы объединить несколько объявлений и сдвинуть указатель за одну операцию "sub esp N".
3. Не кешируйте что либо в переменную, если оно используется один раз. Даже если оно сказывается на читаемости кода, лучше уж перенести на новую строку.
Я тут на днях оптимизировал алгоритм боидов, и мне мозолили глаза 10 локальных переменных. Так вот я и не нашел насколько тормозится программа при создании переменной в стеке. И где она объявляется? Таки в кэше процессора или в ОЗУ?
P.S. Язык С++ если что.
В C/C++ создание переменной на стеке(без инициализации) - сдвиг stack pointer на значение размера переменной, что по накладным расходам в конечном счете примерно ничего. Более того, компилятор достаточно умен, чтобы объединить несколько объявлений и сдвинуть указатель за одну операцию "sub esp N".
И где она объявляется? Таки в кэше процессора или в ОЗУ?
Сразу видно не С++ разработчика )
на шарпах тоже самое все, дпже на ява скрипте v8 сейчас все на стеке лежит.