Теоретически, int
- лучшая ставка.Он должен соответствовать собственному размеру регистра ЦП и, таким образом, быть «оптимальным» в том смысле, о котором вы спрашиваете.
Однако вы можете все же обнаружить, что int-64 или int-128 быстрее на некоторых процессорах, чем int-32, потому что, хотя они больше, чем размер регистра, они уменьшат количество итераций вашего цикла и, следовательно, могут работать более эффективно, минимизируя издержки цикла и / или принимаяПреимущество DMA в более быстрой загрузке / хранении данных.
(Например, на процессорах ARM-2 потребовалось 4 цикла памяти для загрузки одного 32-разрядного регистра, но только 5 циклов для загрузки двух последовательно, и 7циклы для последовательной загрузки 4. Процедура, которую вы предлагаете выше, будет оптимизирована для использования максимально возможного количества регистров (обычно от 8 до 10), и, следовательно, может выполняться в 3 или 4 раза быстрее при использовании нескольких регистров на одну итерацию цикла)
Единственный способ убедиться в этом - написать несколько подпрограмм, а затем профилировать их на конкретной целевой машине, чтобы выяснить, какой продуктиспользует лучшую производительность.