Самый быстрый способ получить доступ к таблице данных Java - PullRequest
2 голосов
/ 13 декабря 2011

По сути, я в дружеской битве за оптимизацию кода (чтобы получить самую быструю программу), я пытаюсь найти способ быстрее получить доступ к словарю жестко закодированных данных, чем многомерный массив.

напримерчтобы получить значение для x:

int x = array[v1][v2][v3] ;

Я прочитал, что вложенные операторы switch в пользовательском массиве могут быть быстрее.Или есть способ, которым я могу получить доступ к памяти, более прямой, чем указатели в C. Любые идеи приветствуются!

Мой «конкурент» использует таблицу истинности, и идея состоит в том, чтобы найти что-то быстрее!

Большое спасибо Сэм

1 Ответ

4 голосов
/ 13 декабря 2011

Если массив имеет правильную форму (т. Е. MxNxK для некоторых фиксированных M, N и K), вы можете попытаться сгладить его, чтобы добиться лучшего местоположения ссылки:

int array[] = new int[M*N*K];
...
int x = array[v1*N*K + v2*K + v3];

Кроме того, если весь массив не помещается в кэш ЦП, вы можете изучить шаблоны, в которых осуществляется доступ к массиву, возможно, изменить порядок индексов или изменить код, чтобы лучше использовать кеши. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...