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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.04.2014, 22:57
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 11  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Как это на вас похоже: взять совершенно разумную идею, соорудить к ней нелепый тест и гордо объявить во всеуслышание "черное" "белым" под еще более нелепым названием темы.

Не нужно иметь семи пядей во лбу и перечитать пол-интернета, чтобы понять элементарную вещь: обращение к свойсву объекта осуществляется через оператор "." (точка), к локальной переменной обращение идет напрямую. Что быстрее?

Старый 09.04.2014, 23:39
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 12  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
>>А скаут, разницы во времени такую мизерную, как-будто не замечает, а я именно за неё и борюсь.

ну ясно, серьезный подход, прогрев плеера, вариативность циклов, внушает..
но, если простейший тест на милионах итераций показывает разницу, сопоставимую с точностью системного таймера, у меня, например, нет никаких сомнений, что ловить здесь нечего
и еще не надо забывать, что на другом железе\ОС\плеере ситуация может оказаться совсем другой, вплоть до противоположной

>>обращение к свойсву объекта осуществляется через оператор "." (точка), к локальной переменной обращение идет напрямую. Что быстрее?

вроде бы напрямую должно быть быстрее, но почему-то тест (пост №9) этого не показывает
а в стародавние времена, бывало показывал.. Ж)
я склонен думать, что плеер научили это делать самому, а может и всегда так было и это миф такой..

Старый 09.04.2014, 23:49
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 13  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
и гордо объявить во всеуслышание
Возможно это Вы вспоминаете свои чувства, которые испытывали при написании статей в блоге?
Не буду говорить за всех, я не такой! Мне гордо заявлять, даже если бы и было, то я это сделал по скромному По этому мне даже смешно, когда на меня то троля нацепить хотят, то гордого заявляющего,
то ещё чего-то. Из-за Вас я вообще уже боюсь темы создавать на форуме, и создавая их, уже трясусь от мыслей, что мой бан зависит от какой-то магнитной бури.
Соорудил я к ней тест... да, но еслиб молчал, то во первых, так бы и пользовался нелепым тестом, а во вторых, если даже я делаю тест в релизе и без энтерфрейм, то результаты, как в самом начале.
А что быстрее, я же вроде написал, что был уверен до сегодняшнего момента, что быстрее локальная.

один из многих -
Код AS3:
write:
loopTime : 536
memberProp : 597
localProp : 594
staticProp : 700
objProp : 590
dynamicProp : 6061
accessProp : 6414
read:
loopTime : 505
memberProp : 502
localProp : 500
staticProp : 515
objProp : 495
dynamicProp : 3949
accessProp : 5813
а иногда бывает вот так -
Код AS3:
write:
loopTime : 524
memberProp : 562
localProp : 552
staticProp : 665
objProp : 570
dynamicProp : 5682
accessProp : 5951
read:
loopTime : 494
memberProp : 503
localProp : 490
staticProp : 522
objProp : 500
dynamicProp : 4083
accessProp : 5871
Добавлено через 2 минуты
И вот при таком раскладе, проще всего забыть о сохранении значения в локальную переменную,
хотя бы при одной точки. И вот такие результаты через раз, то больше, то меньше.

Добавлено через 5 минут
Только хотел уже закрыть этот класс, но думаю дай ещё раз нажму с закрытым браузером, в котором флеш плеер с музыкой ( хоть и выключена )...
Код AS3:
write:
loopTime : 500
memberProp : 572
localProp : 590
staticProp : 680
objProp : 570
dynamicProp : 6075
accessProp : 6008
read:
loopTime : 490
memberProp : 523
localProp : 482
staticProp : 510
objProp : 480
dynamicProp : 4091
accessProp : 5813
Добавлено через 31 секунду
Наверное я такой глупый, что надо мной даже плеер смеется

Добавлено через 11 минут
И такие результаты даже если сделать класс из примера silin'a не динамическим ( это я уже на всякий случай попробовал, так-как не знаю как себя ведёт класс помеченный dynamic ). И ещё что бросается в глаза, что если разница есть с записью, то разница при чтении почти не когда не бывает в пользу локальных переменных.

Старый 10.04.2014, 05:09
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 14  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
А можно еще разок прогнать релиз-билд недебаговым плеером.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.

Старый 10.04.2014, 08:42
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 15  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Ну, вот заставь Akopalipsis'a б-гу молиться... весь лоб расшибет.
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.TimerEvent;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.utils.getTimer;
	import flash.utils.Timer;
 
 
	public class Main extends Sprite 
	{
		private const N:int = 5e7;
		private const D:int = 5000;
		private const C:int = 100;
		private var timer:Timer;
		private var memberProp:int;
		private static var staticProp:int
		private var tf:TextField = new TextField();
		private var member_store:int = 0;
		private var local_store:int = 0;
		private var static_store:int = 0;
 
		public function Main() 
		{
			tf.autoSize = TextFieldAutoSize.LEFT;
			addChild(tf);
			timer = new Timer(D, C);
			timer.addEventListener(TimerEvent.TIMER, test);
			timer.addEventListener(TimerEvent.TIMER_COMPLETE, result);
			timer.start();
		}
 
		private function result(e:TimerEvent):void {	
			tf.appendText( "\nmemberProp (avg): " + member_store / C);
			tf.appendText( "\nlocalProp (avg) : " + local_store / C);
			tf.appendText( "\nstaticProp (avg) : " + static_store / C);
			timer.stop();
		}
		private function test(e:TimerEvent):void 
		{	
			tf.text = "Current tick: " + timer.currentCount;
			//writeTest();			
			//readTest();
			/*
			 * нужный тест раскомментровать
			 * скомпилировать
			 * запустить
			 */
		}
 
		private function writeTest():void
		{
 
			var i:int;
			var t:Number;
			var localProp:int=0;
 
			for (i = 0, t = getTimer(); i < N; i++) memberProp = 0;
			member_store += (getTimer() - t);
 
			for (i = 0, t = getTimer(); i < N; i++) localProp = 0;
			local_store += (getTimer() - t);
 
			for (i = 0, t = getTimer(); i < N; i++) staticProp = 0;
			static_store += (getTimer() - t);
		}
 
		private function readTest():void
		{
 
			var i:int;
			var t:Number;
			var localProp:int = 0;
 
			for (i = 0, t = getTimer(); i < N; i++) memberProp;
			member_store += (getTimer() - t);
 
			for (i = 0, t = getTimer(); i < N; i++) localProp;
			local_store += (getTimer() - t);
 
			for (i = 0, t = getTimer(); i < N; i++) staticProp;
			static_store += (getTimer() - t);
 
		} 
	}
}
Цитата:
//FP 11.7 release
//Flex 4.6 FD 4.4.3
//Build: Release
//Win 7 Pro x64 Core i3 6Gb
//N = 5e7, D = 5000, C = 100

//readTest()
Current tick: 100
memberProp (avg) : 124.62
localProp (avg) : 105.01
staticProp (avg) : 103.94

//writeTest()
Current tick: 100
memberProp (avg) : 132.95
localProp (avg) : 107.54
staticProp (avg) : 254.19
Физкульт-привет "некогданам"!


Последний раз редактировалось alexcon314; 10.04.2014 в 10:48.
Создать новую тему Ответ Часовой пояс GMT +4, время: 19:00.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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