![]() |
|
||||||||||
|
|||||
|
Цитата:
4 байта, на стеке, будет создаваться 60 раз в секунду. Какой ужас! При чем место на стеке и при взятии значения поля(не переменной), если не ошибаюсь, тоже выделяется. Завязывайте с придумыванием себе проблем. Об этих 4-х байтах даже GC не знает - они автоматом после отработки функции сносятся. Или, по-крайней мере, прочитайте доки по работе виртуальной машины, структуре байткода, посмотрите во что компилируется тот или иной код, а уже потом придумывайте себе что и когда будет тормозить. Вот что может создать проблемы, т.к. память выделяется на куче, с последующей сборкой GC и прочими прелестями (но не в вашем случае - 60 раз в секунду выделить память под Point - это фигня на постном масле): но не это: и не это: Цитата:
for each (f in _myFuncVector) { f() // а внутри f вызывается removeFunc(...), // а внутри removeFunc вызывается _myFuncVector.splice(i, 1); // а мы, вообще-то идем по этому _myFuncVector } Кстати, тут и с добавлением функции внутри функции те же проблемы будут. Это типичная проблема для всяких самописных Signal-ов и EventDispatcher-ов (в стандартном, вроде, решена) Если Вы уверены - что внутри слушателя не будете никого подписывать/отписывать - можете забить. Последний раз редактировалось expl; 09.02.2013 в 15:39. |
![]() |
Часовой пояс GMT +4, время: 10:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|