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

Вернуться   Форум Flasher.ru > Блоги > Psycho Tiger

Оценить эту запись

Тесты скорости каждодневных операций

Запись от Psycho Tiger размещена 26.08.2010 в 18:30
Обновил(-а) Psycho Tiger 30.08.2010 в 22:34

Чтобы мне самому не забыть.
Результаты отсортированны в порядке увеличения времени исполнения.


В будущем буду пополнять.

Тест на 100 миллионов итераций:

(num & 1) - просто какая-то операция.
Код:
b:Boolean
b=Boolean(num & 1) time: 281
b = !!(num & 1) time: 285
b = (num & 1) && true time: 305
(10 миллионов итераций)
Код:
var s:String;
var a:String = "Мама ";
var b:String = "мыла ";
var c:String = " гаубицу";

s = a + b + c time: 3006
s = "".concat(a, b, c) time: 7921
(100 миллионов итераций)
Код:
var a:String = "134";
integer = int(a) time: 7260
integer = parseInt(a) time: 9487
(10 миллионов итераций)
Код:
var s:*=new MovieClip();
var s2:Sprite;
s2 = s as Sprite time: 5438
s2 = Sprite(s): 10610
Релиз версия плеера, релиз версия компиляции, 10 FP.
Всего комментариев 18

Комментарии

Старый 27.08.2010 02:39 mayakwd вне форума
mayakwd
 
Аватар для mayakwd
к слову об оптимизации: http://code.google.com/p/apparat/
вот что нашел. тестов не приведу потому что не до этого а ссылкой поделюсь =)
Старый 27.08.2010 10:41 AS3Coder вне форума
AS3Coder
 
Аватар для AS3Coder
Старый 27.08.2010 23:38 incoob вне форума
incoob
Я вот достаточно много в последнее время видел тут. Есть интересные вещи(но и откровенных глупостей, к сожалению, достаточно много).
Старый 28.08.2010 12:44 TERRORist вне форума
TERRORist
 
Аватар для TERRORist
в последнем примере инстанс не создается в первом случае
Старый 28.08.2010 13:07 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Terrorist, не понял о чем ты.
Старый 28.08.2010 15:17 TERRORist вне форума
TERRORist
 
Аватар для TERRORist
Код AS3:
var s:*=new MovieClip();
var s2:Sprite;
в первом случае создается инстанс, во втором - нет
Старый 29.08.2010 16:12 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Вся соль что мы приводим неизвестно что к Sprite`у через Sprite(s) и s as Sprite. Я мерил скорость кастинга, те 2 строчки выложил чтобы люди понимали о чём вообще речь.
Старый 29.08.2010 20:50 КорДум вне форума
КорДум
 
Аватар для КорДум
Тигер, ну не балуйся цветами, я на классической теме оформления форума - ярко зеленый цвет ужасен (:
А вообще - полезные штуки пишешь, жаль, что я нынче на as2 строчу, а так хочется брать выше...
Старый 29.08.2010 20:53 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Спасибо за поддержку, мне важно.

Желание читателя - закон, сейчас подправлю цвета.
Старый 29.08.2010 20:58 КорДум вне форума
КорДум
 
Аватар для КорДум
Красненький можно было оставить. Спасибо)
Нубский вопрос насчет операторов: !!(num & 1) расшифруй, пожалуйста
Старый 29.08.2010 22:13 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
num & 1 - это просто какая-то там операция. Первая, которая пришла в голову.

! - это логическое отрицание, результатом будет логический объект, то есть или true, или false. По этому же принципу работает
Код AS3:
if (!something)
Берём something, и если это дело существует, то результат в скобках будет false. Если существует - true.

А в нашем случае мы снова это дело отрицаем, то есть двойное отрицание. !! - операторы съедят друг друга, как будто бы ничего не было, кроме одной вещи - операнд "something" - у нас это (num & 1) будет преобразован к логическому типу.
Старый 29.08.2010 22:14 КорДум вне форума
КорДум
 
Аватар для КорДум
Цитата:
!! - операторы съедят друг друга
собсно, что и хотел узнать. Вот оно что, ага. Забавно.
Спасибо за разъяснение)
Старый 30.08.2010 17:09 BlooDHounD вне форума
BlooDHounD
 
Аватар для BlooDHounD
а зачем ты мерил это?
Код:
b = (num & 1) as Boolean time: 6176
ты понимаешь что там всегда будет false? оператор as не замается конвертированием. кастинг числа к булу даст null, который сконвертится в false при присвоении.

не запоминайте слудущие:
Цитата:
Что запомнить: as кастует быстрее сложные типы, медленно кастует простые типы.
Почему: видимо он не может перекастовать простые типы, потому что каждый экземпляр простого типа уникален. В итоге это дело даёт null, и мы пытаемся в простой тип записать null и у нас не получается. Как в таком случае работает, например int(value) - неясно.
запоминайте следующие:
as - занимается приведением типов
type() - занимается конвертированием
Обновил(-а) BlooDHounD 30.08.2010 в 17:12
Старый 30.08.2010 19:06 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Ага, спасибо за разъяснение, сейчас поправлю.

Вообще перечитываю что написал и у самого в голове ощущение глупости: вроде помнил, что as с простыми типами плохо себя ведёт, поэтому когда делал parseInt не делал as. Похоже по запарке пытался найти побольше варианта приведения к Boolean и сделал as, а потом попытался сделать вывод на основе тестов, весьма плохо подумав. Спасибо, мне дважды минус. За то что проворонил, и за то что не подумал.
Старый 30.08.2010 19:18 BlooDHounD вне форума
BlooDHounD
 
Аватар для BlooDHounD
Psycho Tiger, as с простыми типами ведёт себя так же как и со всеми остальными.
Код AS3:
var o:Object = 1;
var i:int = o as int;
trace( i );
ещё раз повторю, что он служит для привидения типов.
Старый 30.08.2010 20:10 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Всё, теперь понял. Большое спасибо.
Старый 30.08.2010 22:07 dimarik вне форума
dimarik
 
Аватар для dimarik
Очень интересная статья )

О скорости кастования можно судить только эмпирическим путем или какие-то научные статьи существуют?

Тигра, сократи нули в статье по СИ (10000000000 = 1e10, например).
Обновил(-а) dimarik 30.08.2010 в 22:10
Старый 30.08.2010 22:32 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Я сужу эмпирически.
Сократил до словесных форм, так будет понятней начинающим читателям. )
 

 


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


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