2013-09-09 4 views
0

Я читал сообщение о том, как итерация через 2-мерный массив по горизонтали быстрее, чем по вертикали, из-за способа хранения данных (см.: Fastest way to loop through a 2d array?). Это имело смысл, когда я прочитал ответ, но мне стало интересно, какая разница между 2 и 1 размерными массивами. Есть ли разница в скорости в итерации 1-мерных и 2-мерных массивов с одинаковым количеством ячеек?Скорость итерации через одномерные vs двумерные массивы

+1

О соответствующем примечании см. Http://stackoverflow.com/a/6631081/1003855 – Josh

ответ

3

На Java существует много факторов и больше накладных расходов с массивами. Поскольку массивы являются объектами, int[][] представляет собой массив объектов массива ints. Это может сделать горизонтальную итерацию быстрее, чем вертикально, если точка доступа оптимизирует или кэширует доступ к массиву.

Для одного против двух размерных, одномерный будет быстрее, так как это поиск массива и примитивный по сравнению с поиском массива разыменование ссылки объекта массива, а затем поиск в этого массива.

Однако такая микрооптимизация не обязательно является наилучшим использованием вашего времени, так как есть, вероятно, лучшие места для улучшений.

+0

Это немного быстрее –

+2

@SamIam незначительно является преувеличением в этом случае. – Brinnis

Смежные вопросы