Какой тип целочисленных данных использует ядро ​​процессора x64 наиболее эффективно? - PullRequest
0 голосов
/ 11 января 2011

Для сложения двух 32-битных целых и двух 64-битных целых требуется одно и то же время инструкции на машине x64, не так ли? Если да, то когда я использую 32-разрядные целые числа в ядре процессора x64, остальные 32-разрядные не приносят никакой пользы, не так ли? Я хочу сделать мои вычисления в максимально возможном числовом диапазоне, который поместился бы в 64-битном ядре. Какой тип данных соответствует этим критериям лучше всего?

Мои кандидаты:

  • INT
  • long int
  • int64_t
  • ... (добавьте, если у вас есть еще один)

Ответы [ 3 ]

4 голосов
/ 11 января 2011

Вы действительно не можете сказать, будут ли 32-битные или 64-битные вычисления работать одинаково без какого-либо измерения. Хотя теоретически вы можете передавать вдвое больше бит через ALU, используя 64-битные величины вместо 32-битных, требования к памяти вашего приложения возрастут. Арифметические операции обычно занимают один цикл на процессоре. Доступ к памяти вне кэша ЦП может занимать сто циклов, что может привести к значительному замедлению при использовании 64-разрядных величин.

3 голосов
/ 11 января 2011

m128i

N 32-разрядные операции добавления занимают столько времени, сколько N 64-разрядные операции добавления, только если вы не используете SIMD-модуль.

2 голосов
/ 11 января 2011

int

По определению это тип, наиболее эффективный для процессора, для которого выполняется компиляция.Вот почему int изменяет размер на каждом процессоре.
"Обычные целые имеют натуральный размер, предложенный архитектурой среды выполнения

Примечание. Любой код сильно зависитна запущенной ОС. Если ОС компилируется с определенным размером int, то для обеспечения совместимости любой код, созданный для ОС, должен оставаться прежним. Таким образом, если производитель ОС поддерживает совместимость с 32-битным int, размер int останется 32 какпо умолчанию (даже если 64 с той же скоростью).

Надеемся, что со временем производители ОС обновят его, предложив истинную 64-битную версию.

...