Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.02.2011, 15:48
semenyakinVS вне форума Посмотреть профиль Отправить личное сообщение для semenyakinVS Найти все сообщения от semenyakinVS
  № 1  
Ответить с цитированием
semenyakinVS

Регистрация: Mar 2010
Сообщений: 137
(Через минуту)

Ясно. А чего с $ начинается? Это часть стиля?

Добавлено через 3 минуты
Кстати, по поводу статических переменных... Не знаю, может, я что-то не так делал, но я пробовал для набора родственных классов делать статические переменные, чтобы не творить их заново.

К удивлению, я только потерял в быстродействии.


Последний раз редактировалось semenyakinVS; 13.02.2011 в 15:49. Причина: После "обычной переменной..."
Старый 13.02.2011, 15:52
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 2  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
ну типа статичный регистр. f01 - сокращение от float01, хотя по-сути тут числа double.., да неважно впрочем. Надо же как то выделить было

Добавлено через 6 минут
фишка то не в названии, а в том, что при выносе промежуточной локальной переменной из функции в приватное поле класса, наблюдается прирост быстродействия. Я ни в коем случае не настаиваю использовать такие конструкции в ущерб функциональности. Просто коли уж зашел разговор о выдавливании последних капель производительности из кода, то вот, знайте, есть и такие вариации так сказать

Добавлено через 13 минут
хотя в данном примере можно было поступить еще проще: заюзать уже существующую локальную переменную
Код AS3:
	public function normalize( len:Number=1.0 ):void
	{
		len /= Math.sqrt(x*x + y*y);
 
		x *= len;
		y *= len;
	}


Последний раз редактировалось i.o.; 13.02.2011 в 16:00.
Старый 13.02.2011, 16:07
semenyakinVS вне форума Посмотреть профиль Отправить личное сообщение для semenyakinVS Найти все сообщения от semenyakinVS
  № 3  
Ответить с цитированием
semenyakinVS

Регистрация: Mar 2010
Сообщений: 137
Не... Так я ж тоже так думал! Но проверил - и с удивлением, с грустью даже осознал, что таки нет. Не помогло! Могу показать функцию, в которой применял:


Код AS3:
public static function segINTseg(segm1:Segm2d, segm2:Segm2d):Point2d
		{
			var kx1:Number = segm1.DeltaX;
			var kx2:Number = segm2.DeltaX;
 
			var ky1:Number = segm1.DeltaY;
			var ky2:Number = segm2.DeltaY;
 
			var tmpCord:Number;
 
			// *************
			//   0 0 line_2
			//   |/
			//   /
			//  /|
			// 0 0 line_1
			// *************
 
			if (kx1 == 0)
			{   
			. . .
Вот. Есть статический класс Math2d.

Указанный кусок - начало функции поиска точки пересечения двух отрезков. Я сделал простую вещь. Проверил время выполнения для этой версии функции (10000 итераций), а потом - просто сделав копи-паст, запустил ту же функцию, но со статическими переменными, т. е., в коде класса Math2d сделал:

Код AS3:
static var kx1:Number;
static var kx2:Number;
 
static var ky1:Number;
static var ky2:Number;
А в коде функции просто использовал эти переменные. В результате производительность упала (!) где-то в полтора раза.

Не понимаю даже - почему.


Последний раз редактировалось semenyakinVS; 13.02.2011 в 16:09. Причина: Тег [AS3]
Старый 13.02.2011, 16:11
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 4  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
приватные нужно, приватные.
Я проверял где-то год назад это все - наблюдался небольшой прирост, иначе и не писал бы.
И прирост собственно будет только в "маленьких" методах, который пару строчек. На котором хоть как-то сказывается инициализация локальной переменной.
Если у вас потом идет тяжелый расчет, то толку абсолютно никакого не будет, скорее падение будет наблюдаться.

Старый 13.02.2011, 16:14
semenyakinVS вне форума Посмотреть профиль Отправить личное сообщение для semenyakinVS Найти все сообщения от semenyakinVS
  № 5  
Ответить с цитированием
semenyakinVS

Регистрация: Mar 2010
Сообщений: 137
Ну так, приватные... Без модификатора доступа они, как я понимаю, по-умолчанию приватные...

Ладно. Наверное, что-то где-то напутал, когда проверял скорость выполнения. Ещё раз исправлю - гляну, что выйдет. Отпишусь.

А за идею использовать $ в начале названий переменных спасибо. Как раз недавно голову ломал по этому поводу. Забыл, что этот символ входит в набор разрешённых для начала имени переменной.
Буду теперь юзать для служебных параметров классов.

Старый 13.02.2011, 16:15
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 6  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
по-умолчанию internal

Добавлено через 2 минуты
$ так-то еще у супер-методов принято ставить...

Старый 13.02.2011, 19:09
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 7  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
В оригинальной конвенции $ предлагают ставить перед методами финалистами =)

@Автор: вектор — это направленный отрезок. При этом 2 вектора считаются одинаковыми если они совпадают параллельным переносом. То есть вектора
(0,0; 10; 10) и
(10; 10; 20; 20) совершенно одинаковые. А раз такая пьянка то смысла задавать первую точку нет

@i.o., я вот не очень понял. Скорость сохранения в статичное поле класса в твоём примере быстрее, чем в локальную переменную или что?

Старый 13.02.2011, 20:14
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 8  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Кто нибудь тестировал на производительность этот Vector2 в сравнении с Point? Какой смысл его вообще использовать?

Старый 14.02.2011, 12:02
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 9  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Цитата:
Сообщение от alatar Посмотреть сообщение
Кто нибудь тестировал на производительность этот Vector2 в сравнении с Point? Какой смысл его вообще использовать?
Тут скорее идеологический вопрос - вектор и точка похожи во многом, однако точка не может показывать направление, а вектор именно для этого и существует. Плюс такие полезные операции как дот-, кросс-продукты не логично применять к точкам. И я тестировал нативные классы - Vector3D, Point - они пипец тормозные. А Vector3D вообще после normalize может дать результат больше 1.
Автор - я в блоге тут на флэшере писал про вектора и САТ...

Старый 13.02.2011, 20:18
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 10  
Ответить с цитированием
goodguy
Banned

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Да какая разница. Для меня его производительность вообще не имеет значения. И суть темы не в этом.
Цитата:
@Автор: вектор — это направленный отрезок. При этом 2 вектора считаются одинаковыми если они совпадают параллельным переносом. То есть вектора
(0,0; 10; 10) и
Кэп
Об этом написано в википедии и еще на куче ресурсов.

Для меня важна не теория, а применение на практике. В данном случае в коде на ActionScript 3.

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:58.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 13:58.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.