Выровненные по словам нагрузки быстрее, чем невыровненные нагрузки на процессорах x64?

Является ли загрузка переменных, выровненных по границам слов, быстрее, чем невыровненные операции загрузки на процессорах x86 / 64 (Intel / AMD 64 бит)?

Коллега Я считаю, что невыровненные нагрузки являются медленными, и их следует избегать. Он цитирует добавление элементов к границам слов в структурах как доказательство того, что невыровненные загрузки выполняются медленно. Пример:

struct A {
  char a;
  uint64_t b;
};

Структура A обычно имеет размер 16 байт.

С другой стороны, в документации компрессора Snappy говорится, что Snappy предполагает, что «невыровненные 32- и 64-битные загрузки и сохранения обходятся дешево». Судя по исходному коду, это справедливо для 32- и 64-битных процессоров Intel.

Итак: Что здесь правда? Если и на сколько невыровненные нагрузки будут медленнее? При каких обстоятельствах?

6
задан Jeffrey Bosboom 19 May 2017 в 23:34
поделиться