|
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Уникальный идентификатор объекта
var object1:Object = new Object(); var object2:Object = new Object(); if(object1 == object2){}; А существует ли возможность, получить значение этих ссылок? Или возможно у объектов есть какие-то другие уникальные идентификаторы, как у DO instanceName ? Объясню для чего - ключи String и Object, очень долго добавляются, в отличии от int и первое что пришло в голову, создать по идентификатору числовой ключ. Но наверное, это ещё одна безумная мысль) |
|
|||||
[+4 06.05.14]
|
Да иди ты,
Цитата:
__________________
Марк Tween |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
решил посмотреть, что у Вас интересного есть в блоге. Да, я прочел несколько статей и подчерпнул из них то, чего ещё не касался. А ещё я увидел, как Вам советовали отрубить руки. На лицо синдром жертвы и я бы не удивился, если и в турпоход Вас тоже посылали Цитата:
И замечу, что я не говорю, что из-за строковых ключей у меня все лагает, просто хотелось поинтересоваться, есть ли решение или родной метод для этого. |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Цитата:
Вообще то что ты хочешь – это сделать получить что-то вроде хэша объекта. В общем, гораздо проще наследовать требуемый объекты от какого-нибудь класса, который в конструкторе присвоит ему уникальный ID'шник. Разве что Цитата:
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Цитата:
Может я тебе открою секрет (Полишинеля ), но в as3 int - это тоже Object. Если нужно что-то очень быстрое, то as3 вообще не подходящий язык для этого (собственно, как и любой другой интерпретируемый язык). Изучи ассемблер, достигни невероятных скоростей |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
сначала я тестировал скорость получения элементов из обычного массива - int - 16, String - 16, Object - 16. Сделал я это для того, чтобы отсечь время на получение заранее созданного и помещённого в массив ключа. Теперь скорость добавление объекта + ключ в Dictionary - ключ int - 260, ключ String - 11 500, ключ Object - 600. Тест для Object - ключ int - 250, ключ String - 11 500, ключ Object - 4050. Как видно, разница добавления объекта в зависимости т ключа, просто огромная. Но если у объектов нет не чего уникального, тогда придётся с этим мирится. Добавлено через 2 минуты А добавляю я var _dictionary:Dictionary = new Dictionary(); var _object:Object = new Object(); var object:Object = new Object(); // и потом dictionary[arrayKeys[i]] = object;// arrayKeys это массив с заранее созданными ключами я не как не успокоюсь с коллекциями... Какой день сижу и делаю тесты и получается, что она только во вред. У коллекций есть только одно преимущество - это быстрая скорость удаления ( из середины, начала и конца ), замены элементов. Но скорость добавления в коллекцию, во много раз медленнее, так же как получение элемента. Получается, чтобы сделать коллекцию эффективной, нужно хешировать data и тогда будет просто замечательно. Но есть одно НО! Если делать кеш, то ещё можно закрыть глаза на увеличившиеся в РАЗЫ время добавления, но вот то, что в коллекцию нельзя будет добавить два одинаковых элемента ( ведь кеш будет по data ), это уже проблема.. |
|
|||||
package { // Класс UID public class UID { private static var Uid:uint = 0; public function UID() { } public static function SetUID():uint { Uid++; return Uid; } } } package { // Класс "Объект" import flash.display.Sprite; import UID; public class MyObject extends Sprite { private var uid:uint; public function MyObject() { uid = UID.SetUID(); } public function get UID():uint { return uid; } } }
__________________
interplanety |
|
|||||
listener
|
Продолжаете заниматься схоластикой?
Вот тут один гигант мысли вынимает "ID in the memory allocation" для object при помощи try-catch. Про скорость, оптимизацию коллекций написано немало материалов, тестов. Например, http://jacksondunstan.com/articles/tag/dictionary. Ах да... с английским у вас не очень, я припоминаю..сочувствую. |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
alexcon314 Спасибо! При чем - Большое! Сижу, читаю, оторваться не могу.
А про коллекцию.. я прочел почти все статьи на хабре про коллекции в яве. И после того, как я начал представлять их роль, я опять вернулся к ковырянию всех попавшихся мне на гитхабе коллекций и.. И вот ъоть убей, но мне кажется, что все они сделаны неправильно))) Коллекция, хранящая data в, как их все называют - узлах ( node ), с треском проигрывает по добавлению всем родным хранилищам. Единственный и СУМАСШЕДШИЙ прирост ноды дают только при удалении, замене и сортировки. Но во всех коллекциях итератор работает с массивом, полученным путем перекидывания data с нод в него. И отсюда получается, что все сделано наоборот. Там где нужен массив, там ноды, а там где нужны ноды, там массив.. И по этому я пока склонился к двум классам-франкинштейнам из красивого слова коллекция - хранилище для стринговых ключей ( помогли на метфоруме составить алгоритм ) и хранилищу объектов по id, которое придётся самому в поле класса вбивать или если его и нет, то по примеру из Вашей ссылке. Спасибо ещё раз! |
Часовой пояс GMT +4, время: 01:30. |
|
« Предыдущая тема | Следующая тема » |
|
|