![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2009
Сообщений: 20
|
В различных методах class`а много циклов. Понятное дело, что в каждом из них есть локальные счетчики (var i:int = 0). Вот.
Можно ли i обявить private static var? Можно то конешно оно можно и скорость повысится, но вдруг во флеш появятся потоки или захочу класс переписать на Java? И, вообще, нормально ли таким спсобом оптимизировать? Не будет ли в будущем проблем? |
|
|||||
|
Оптимизации не будет, будет деоптимизация.
Локальные переменные бегают в разы быстрее, чем глобальные.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 20
|
Ну, хорошо. Не private static var, а просто private var.
То есть каждый экземпляр имеет свойство i (и j, если понадобится). Я не оч знаю яву, но по моему там можно запирать методы, чтобы другой поток не выполнил метод параллельно основному. По-моему выгода очевидная. |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
Вы можете сделать тест и оценить выгоду самостоятельно. Это займёт всего пять минут.
|
|
|||||
|
В статик поля имеет смысл загонять более сложные объекты, которые МОЖНО ПОВТОРНО использовать - т.е. использовать один объект без пересоздания
А выносить переменные, хранящие примитивные типы вроде числа или булева, (помоему, не уверен, даже стороки-константы внутри функций компилятор как-то распознает и не пересоздает) нет смысла - только увеличится время доступа - оно ощутимо меньше для переменных Последний раз редактировалось expl; 16.01.2010 в 01:37. |
|
|||||
|
Цитата:
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Не майтесь ерундой. используйте локальные переменные для каждого блока свои собственные. Оптимизируйте сами циклы.
Статичные переменные не дадут прироста производительности, скорее наоборот. |
|
|||||
|
Цитата:
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
|
Modus ponens
|
Это, ну как бы вам сказать, создать локальную переменную численного типа и инициализировать ее занимает, ну, наверное наносекудны какие-нибудь. Т.е. чтобы даже потестить разницу вам надо будет создать что-то типа миллиона, а может и миллиарда локальных переменных. Может быть вы и не сделаете хуже вынеся i в поле класса, но писать код станет в разы неудобнее и никакого преимущества в смысле скорости вы не заметите. Кроме всего прочего, возможно, что циклы оптимизируются компилятором, и при этом если вам нужно будет писать новое значение при каждой итерации в поле класса вы потеряете эту оптимизацию... вобщем, идея бессмысленная
![]()
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 20
|
Ну вот я писал класс. Принимает много пар параметров типа x,y. В самой функции я для удобства создавал переменные dx, dy. И потом еще одну группу переменных на основе dx, dy. Код выглядел красиво и понятно (с мат точки зрения).
Но вот потом понял, что лучше вычислять dx всякий раз когда это требуется заного. Только если значение dx потребуется более 20 раз, тогда имеет смысл создавать переменную. Кроме случаев, если переменная не содержит вычесленный квадрат, какие либо деления, разумеется. А что касается счетчиков, то они нужны практически всегда и никто не будет думать, а что это за приватные свойства i и j в классе. |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|