В данный момент я храню воксели в простом списке. ([0,0,0,0,0,1,0,0,1 ...])
Для извлечения воксельной позиции в списке я использую эту функцию:
def getBlockKey(self, x, y, z):
blockX = x % CFG_CHUNK_SIZE
blockY = y % CFG_CHUNK_SIZE
blockZ = z % CFG_CHUNK_SIZE
return blockX + blockY * CFG_CHUNK_SIZE + blockZ * (CFG_CHUNK_SIZE * CFG_CHUNK_SIZE)
Но это очень медленно при обработке больших объемов данных. Например, перебор каждого куба в 256 * 256 * 256 порциях занимает 50 секунд.
Я думаю, что было бы быстрее использовать dict, но он использует слишком много памяти.
Не могли бы вы помочь мне найти компромисс между этими двумя?