![]() |
Модераторы: SoWa |
![]() ![]() ![]() |
|
szz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: нет Всего: 33 |
Мы можем давать типы переменным, но можем ли задать тип массиву?
И в АС получается элементы массива - все те же динамические переменные? Например как в С int arr[100]; - это массив, все его ячейки должны быть int. А var arr:Array = new Array(); создаст массив, но ячейки динамические. Как сделать так, чтобы в элементы этого массива годились только инт? --------------------
|
|||
|
||||
GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
Вы имеете ввиду ключи в массиве или значения ключей?
szz, опять вы про свой С -------------------- ![]() ![]() |
|||
|
||||
szz |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: нет Всего: 33 |
и то и другое.
ключи должны быть одного типа, значения - другого. Напрмер
--------------------
|
||||
|
|||||
AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 18 |
ну как вариант, расширь коллекции...
сделай Generic коллекции... и generic мапы соответсвенно..... http://forum.vingrad.ru/topic-118682.html Добавлено @ 01:22 http://as3.ru/?p=8 -------------------- ГЫ... |
|||
|
||||
szz |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: нет Всего: 33 |
Дааа, почитал...
Касатекльно предпоследнего примера отсюда: http://as3.ru/?p=8\
Если вместо своего класса использовать примитивный int - например так:
То это как-то ускорит процесс или все же нет? --------------------
|
||||||
|
|||||||
AlDev |
|
|||
Опытный идиотъ ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1927 Регистрация: 17.4.2005 Где: Irk, rus Репутация: 10 Всего: 50 |
есть такая вещь - метатеги
но действуют только для полей класса ![]()
но это не то. |
|||
|
||||
AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 18 |
-------------------- ГЫ... |
|||
|
||||
szz |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: нет Всего: 33 |
Это именно то что надо! Спасибо огромное!!! А то, что только члены класса - не страшно, ибо в ас3 все - члены класса... Я сейчас проверю, насколько это быстрее. --------------------
|
||||
|
|||||
szz |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: нет Всего: 33 |
Так, результат таков.
Использование [ArrayElementType("int")] дает только проверку во время компиляции и не влияет на тип данных (и, соответсвенно, никак не прибавляет скорость). Но приведение через примитивный тип переменной сработал! 30мс против 260мс! Почти в 8 раз. При 0xfffff итераций этот пример занимает 260мс:
А этот - 30мс! :
Как это объяснить? По идее массив так или иначе отстается динамически типизированным. Получается что в первом случае машина тормозит перебирая типы дл прибавления. Во втором случае мы сначало присваиваем к инту, а потом суммируем быстро два машинных значения. Значит, при присваивании к типизированной переменной n флэш не задумывается о типе? Это сообщение отредактировал(а) szz - 3.2.2007, 19:59 --------------------
|
||||||
|
|||||||
miramax |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 13.11.2006 Репутация: 1 Всего: 1 |
szz, статья как раз об этом. Только я для наглядности исполmзовал не примитив, а костомный класс в котором есть ещё и вложенные поля. Что бы показать, что по типизированной ссылке также ускоряется доступ к полям объекта.
Вот твой код:
Обрати внимание на строку 4, там есть оператор +. Но в AS3 не только у типа int есть такое оператор. Есть ещё строки и другие числовые типа. Поэтому AVM сначала определяет тип элемента массива, а потом производит сложение. А в коде:
строками 2 и 4, ты явно определяешь тип переменной. Поэтому AVM не тратит время на поиск типа , выполняя строку 5, во много раз быстрее. Можно сказать что оператор += это то же функция в объекте типа int . И поэтому доступ к этой функции-полю через типизированную ссылку происходит намного быстрее. Аналогично в классе My из статьи, обращение к членам a, b, c происходит пыстрее через типизированную ссылку. И на последок :
![]() Это сообщение отредактировал(а) miramax - 3.2.2007, 21:49 |
||||||
|
|||||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | ActionScript 3 | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |