Я пишу модуль Cython, который работает с большим количеством 5-байтовых ключей, извлеченных из хранилища значений ключей.Я остановился на 5, потому что это дает мне достаточно места для комбинаций (~ 5 триллионов) для очень небольшого пространства.
Наборы результатов извлекаются и объединяются в смежные блоки памяти, которые я могу сканировать с помощью 5-байтовых шагов.Пока это довольно быстро, но код может использовать некоторую очистку.
Мне интересно, могу ли я упростить свой код, используя size_t или длинные целые, вместо 5-байтовых блоков, и иметь дело с массивами чисел вместо байтовых блоков.Помимо увеличения объема памяти на 5–8 байт, мне интересно, к какому снижению производительности я могу привести или даже могу ли я сделать свою программу более эффективной на 64-битной машине, если некоторые инструкции процессора предпочитают 8-байтовые блоки.
Я довольно новичок в этом виде низкоуровневого программирования, поэтому я подумал, что мог бы воспользоваться некоторыми советами, прежде чем начать писать концептуальное доказательство, охватывающее все операции, которые мне нужно сделать (поиск, объединение,вставка и т. д.).
Советы приветствуются!