Я испытываю желание добавить что-то здесь, даже если это очень старая тема.Я не полностью согласен с «Я знаю, что в скорости нет никакой разницы».Действительно, очень часто в цикле for происходит индексация массива, например в
for (i=0; i<len; i++) s = A[i]
. Тогда даже если размер вашего массива меньше 128, вы увидите заметную разницу в скорости, если i
является int
или byte
.Действительно, чтобы выполнить арифметику указателей в A[i]
, процессор должен преобразовать ваше целое число во что-то, что имеет тот же размер, что и указатель.Если целое число уже имеет такой же размер, то нет преобразования, которое бы вызывало более быстрый код.На 64-битной машине я вижу ускорение программ на 20%, используя long int
для индексов цикла в очень маленьком массиве вместо char
(программы на C / C ++).