![]() |
|
||||||||||
|
|||||
|
Народ а может кто нить кинуть ссылок на статьи по сравнительным скоростям сортировок и выборок в массивах и векторах?
Ситуация такая: Есть tiles:Vector.<Vector.<Tile>> , где Tile - это класс тайл игрового поля. У каждого экземпляра Tile есть свойство state:uint (0-4) Мне нужно выбрать из массива tiles выбрать все элементы Tile со state == 3, например. При обычном поиске это сильно грузит процессор. Также пробовал переложить все содержимое в одномерный массив и делал sotrOn то тоже очень тормозит. Основная проблема, что iles:Vector.<Vector.<Tile>> — это 2-мерный вектор 350*350 элементов и каждый весит около 2кб.
__________________
To beer or no to beer? That is the question... |
|
|||||
|
Я бы делал все таки одномерным вектором.
Для выборок можно создать несколько масивов, в которых хранить тайлы с одинаковым значением state Сортировать можно QuickSort'ом, реализации есть в интернете Насчет веса элемента - не совсем понятно, какое это имеет значение?
__________________
...вселенская грусть |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 32
|
Использовать Vector.filter, например:
И массив сделать, конечно, одномерным. Это в первую очередь. |
|
|||||
|
потому что при создании и добавлении элементов в массив создается его копия с новым элементом а потом удаляется старая, ибо память под массив резервируется и он является в ней неразрывным. И 350*350*2кб = 240mb памяти.
Добавлено через 2 минуты Цитата:
__________________
To beer or no to beer? That is the question... |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 32
|
Нет. В массиве не сами элементы, а референсы на них. Сами элементы при операциях над массивом не уничтожаются и не создаются.
|
|
|||||
|
Preprocessing, preprocessing, preprocessing (c), N-author`s.
Я не думаю, что господа Тайлы изменяются с частотой раз в секунду. Перед началой игры можно запомнить эти массивы уже отфильтрованные.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Цитата:
Добавлено через 5 минут Количество тайлов не меняется, а вот состояние - да. По сути так щас и есть — генерится Vector.<Vector.<Tiles>> в самом начале. Нужен рандомный выбор из групп тайлов с разным состоянием. Для этого и требуется из двухмерного вектора получить одномерный вектор тайлов с одинаковым стейтом. И получить хотябы один раз, а потом изменять добавляя и удаляя элементы.
__________________
To beer or no to beer? That is the question... |
|
|||||
|
Цитата:
Цитата:
Цитата:
__________________
...вселенская грусть Последний раз редактировалось gloomyBrain; 09.02.2011 в 16:52. |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|