Задача простая и типовая.
Имеется большой двумерный массив.
И мы хотим работать с ним максимально эффективно.
В моем случае меня интересовал массив чисел (байтов).
Ну.
Самое простое, что приходит на ум, — это использовать стандартный тип двумерного массива и обращаться к элементам в виде a[x][y].
Но насколько это эффективно? Возможно, было бы быстрее работать с одномерным массивом и обращаться к элементам как [x + y*size_x]? Чтобы расставить все точки над «и», я написал тест, проверяющий скорость чтения и записи различных вариантов массива.
На ум пришли следующие варианты:
- 2-мерный нетипизированный массив (массив)
- Одномерный нетипизированный массив (Array)
- Двумерный типизированный массив (Vector. > )
- Одномерный типизированный массив (Vector. )
- Использование BitmapData в качестве хранилища и setPixel/getPixel для доступа.
- Одномерный массив байтов (ByteArray)
- Ну, и наконец, извращение.
Доступ к ByteArray, ускоренный за счет быстрого доступа к памяти технологии Alchemy.
Тест имитировал чтение и запись всех элементов массива размером 1500x1500 точек.
Каждую операцию выполняли 5 раз и брали среднее время.
Также, естественно, динамические массивы создавались заранее и заполнялись элементами (т.е.
при тестовых измерениях новые элементы не добавлялись).
Итак, что случилось:
Диаграмма:
Выводы очевидны.
Исходный код размещен здесь: Wonderfl.net/c/d58d Теги: #flash #массив #вектор #массив #Adobe Flash
-
Вы Блокируете Свой Смартфон/Телефон Паролем?
19 Oct, 24 -
Mysqlgame
19 Oct, 24 -
Намек Или Воровство?
19 Oct, 24