18-19 ns доступ. Это нормально или есть какие-то более приспособленные для этого способы хранения?
А вы как измеряли?
а нельзя ли матрицей обойтись с линейным блоком памяти, а не вложенными массивами? В операции nds[x][y][z] довольно много вычислений. Если это в цикле, то хотя вынесите переменную типа arr = nds[x][y]; for z … arr[z]…
Что то типа inds[x, y][z] должно быть быстрее?
Не забывайте, что операция inds[x, y][z] подразумевает взять массив по адресу inds, подгрузить его в кэш процессора, вычислить смещение x, y, прочитать адрес по этому смещению, подгрузить в кэш процессора массив по этому адресу, вычислить смещение z. И так каждый раз при каждом подобном обращении. Если хотя бы часть вынесена в переменную, очевидно, будет быстрее. Собственно, хороший оптимизирующий компилятор такие вещи должен отлавливать сам. На счёт джулийного не уверен.
Обсуждают сегодня