Какие преимущества дает использование 64-bit кода и 32-bit данных?
Я предполагаю, что речь идет об архитектуре Intel 64 (x86_64) и под 32-битными данными подразумеваются double words и 32-битные регистры.
Использование 32-битных данных вместо 64-битных имеет смысл по нескольким причинам:
Quad words (64 бита) занимают вдвое больше памяти, чем double words (32 бита) в кэше процессора. Использование последних позволяет использовать кэш более экономно, что может положительно сказаться на производительности.
Инструкции, оперирующие над quad words и 64-битными регистрами обычно длинее чем те, что работают с double words и 32-битными регистрами. Поэтому там, где можно использовать последние, лучше использовать их1.
Классический пример: для обнуления 64-битного регистра стоит использовать не
xor R64, R64
а 32-битную версию этого регистра:
xor R32, R32
потому что такая операция обнулит не только 32-битную часть EAX
, например, но и его 64-битную часть. Результат одинаковый, размер инструкций разный. Что опять же положительно скажется на производительности: а) инструкция будет занимать меньше места в кэше; б) уменьшится размер бинарного файла.
Если нам нужно поддерживать и 32-, и 64-битную версию программы, имеет смысл использовать 32-битные данные, чтобы уменьшить различие между версиями и сделать их сопровождение более простым.
1. Это не всегда возможно. Например, в 64-bit mode мы не можем положить на стек (push
) 32-х битное значение.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Вот такой кодПри выполнении ввожу: 5, (1,2,3,4,5), 5 (6,7,8,9,10), получаю -858993460 -858993460 -858993460 -858993460 -858993460 1 2 3 4 5
Я хочу воспользоваться методами библиотеки Eigen для решения СЛАУЯ взяла пример из файла документации и проект не компилируется
Подскажите в чем ошибка при реализации следующей ситуации: