|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Правильное и быстрое объявление переменных в классе
Здравствуйте!
написал класс и не пойму как объявить динамические переменные. Почитал инет и все по разному советуют. Подскажите как правильно и быстро объявить их? не пойму когда их в нулл надо ставить сразу, а когда просто тип обозначить. переменные у меня динамические и присвоение при создании экземпляра класса происходит не всегда и не для каждой переменной. соответственно, если я правильно понимаю, мне нужно нуллить их изначально? Варианты: |
|
|||||
Регистрация: Nov 2010
Сообщений: 497
|
Цитата:
Цитата:
Цитата:
Цитата:
|
|
|||||
тьфу блин "динамические" ... в смысле не статичиские.
спасибо за ответ. картина стала яснее, но всё таки... просто читал статью про оптимизацию и ускорение кода и там было написано что вместо медленного лучше использовать вот и задумался.... а правильно(в смысле ускорения кода) ли я другие переменные объявляю? может кто-то проводил тесты? |
|
|||||
Регистрация: Nov 2010
Сообщений: 497
|
Это называется "переменные экземпляров" вроде бы.
Ускорять код на микроуровне обычно никакого смысла не имеет. Ладно бы еще это были очевидные оптимизации вроде смены двух проходов по массиву на один. А здесь оптимизация совершенно не очевидна. И если инициализация принципиальна для оптимизации, для нее комментарий в коде должен быть оставлен. Иначе в процессе поддержки оптимизацию могут и удалить. Кстати, а в статье не написано, что перед оптимизацией стоит произвести профилирование и определить, что же именно стоит оптимизировать? А в процессе разработки следует руководствоваться соображениями удобства сопровождения кода. Исходя из них и команды вырабатываются и конвенции для каждого отдельного проекта. Может, у вас будет принято вообще везде писать инициализаторы переменных в не зависимости от того, чем они инициализируются. Или явно все в конструкторе инициализировать, например. |
|
|||||
Цитата:
Переменной с типом Boolean присваивается по умолчанию false, int - 0, Number - NaN и т.д. Поэтому как хотите (и как написано в вашем соглашении по кодированию) - так и делайте. Первые 2 строчки практически равнозначны. А вот третья координально различается по производительности - происходит динамическое выделение памяти под Vector.<uint> (с выполнением некоторых дополнительных операций). И если его не используете, а где-то создаете его ещё раз - то это выделение было напрасным. Последний раз редактировалось expl; 05.05.2012 в 13:14. |
|
|||||
Нюанс по поводу:
Цитата:
__________________
местонахождение |
|
|||||
покритикуйте мой код пожалуйста
смысл в чём..... есть класс, в нём допустим 20 static переменных и 20 переменных экземпляров. переменные экземпляров будут заполняться(присваиваться) не все. поэтому мне лучше всего их сразу в классе определить как пустые. приравниваю к null: private var vec1:Vector.<uint> = null; private var _txt:String = null; private var _id:String = null; private var _lvl:int; ну а static сразу создаю: public static var txt2:String = ''; public static var dig:int=0; public static var vec2:Vector.<uint> = new Vector.<uint>; public static var vec3:Vector.<uint> = new Vector.<uint>; public static var obj:Object = {}; Последний раз редактировалось billion; 05.05.2012 в 16:06. |
|
|||||
Цитата:
Разницы в производительности при их использовании после создания не обнаружено (но, создаётся через new раза в 3 медленнее) В as1/as2 было более-менее понятно: на созданном через [] массиве методы push() и pop() работали в разы медленнее, чем на массиве new Array(), хотя сам массив создавался быстрее. Цитата:
Объекты лежат в динамической памяти и на один и тот же объект может ссылаться куча переменных И вот GC будет помечать эту память как свободную, только когда этих ссылок не останется Последний раз редактировалось expl; 05.05.2012 в 19:30. |
Часовой пояс GMT +4, время: 19:35. |
|
« Предыдущая тема | Следующая тема » |
|
|