|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
listener
|
Как это на вас похоже: взять совершенно разумную идею, соорудить к ней нелепый тест и гордо объявить во всеуслышание "черное" "белым" под еще более нелепым названием темы.
Не нужно иметь семи пядей во лбу и перечитать пол-интернета, чтобы понять элементарную вещь: обращение к свойсву объекта осуществляется через оператор "." (точка), к локальной переменной обращение идет напрямую. Что быстрее? |
|
|||||
>>А скаут, разницы во времени такую мизерную, как-будто не замечает, а я именно за неё и борюсь.
ну ясно, серьезный подход, прогрев плеера, вариативность циклов, внушает.. но, если простейший тест на милионах итераций показывает разницу, сопоставимую с точностью системного таймера, у меня, например, нет никаких сомнений, что ловить здесь нечего и еще не надо забывать, что на другом железе\ОС\плеере ситуация может оказаться совсем другой, вплоть до противоположной >>обращение к свойсву объекта осуществляется через оператор "." (точка), к локальной переменной обращение идет напрямую. Что быстрее? вроде бы напрямую должно быть быстрее, но почему-то тест (пост №9) этого не показывает а в стародавние времена, бывало показывал.. Ж) я склонен думать, что плеер научили это делать самому, а может и всегда так было и это миф такой.. |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
Не буду говорить за всех, я не такой! Мне гордо заявлять, даже если бы и было, то я это сделал по скромному По этому мне даже смешно, когда на меня то троля нацепить хотят, то гордого заявляющего, то ещё чего-то. Из-за Вас я вообще уже боюсь темы создавать на форуме, и создавая их, уже трясусь от мыслей, что мой бан зависит от какой-то магнитной бури. Соорудил я к ней тест... да, но еслиб молчал, то во первых, так бы и пользовался нелепым тестом, а во вторых, если даже я делаю тест в релизе и без энтерфрейм, то результаты, как в самом начале. А что быстрее, я же вроде написал, что был уверен до сегодняшнего момента, что быстрее локальная. один из многих - 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 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 И вот при таком раскладе, проще всего забыть о сохранении значения в локальную переменную, хотя бы при одной точки. И вот такие результаты через раз, то больше, то меньше. Добавлено через 5 минут Только хотел уже закрыть этот класс, но думаю дай ещё раз нажму с закрытым браузером, в котором флеш плеер с музыкой ( хоть и выключена )... 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 Наверное я такой глупый, что надо мной даже плеер смеется Добавлено через 11 минут И такие результаты даже если сделать класс из примера silin'a не динамическим ( это я уже на всякий случай попробовал, так-как не знаю как себя ведёт класс помеченный dynamic ). И ещё что бросается в глаза, что если разница есть с записью, то разница при чтении почти не когда не бывает в пользу локальных переменных. |
|
|||||
А можно еще разок прогнать релиз-билд недебаговым плеером.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ" Мои ачивки: художник-паразит. |
|
|||||
listener
|
Ну, вот заставь Akopalipsis'a б-гу молиться... весь лоб расшибет.
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); } } } Цитата:
Последний раз редактировалось alexcon314; 10.04.2014 в 10:48. |
Часовой пояс GMT +4, время: 19:00. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|