sergEO7905 При компиляции приложения Intel C++ встраивает в программу диспетчер, определяющий тип процессора и доступные наборы команд. При выполнении выбирается оптимальный вариант, обеспечивающий максимальную производительность. Да, "по умолчанию" процессоры AMD им не опознаются (т.е. программа выполняется без использования SIMD-инструкций). Но эта проблема легко решаема, см. сайт Агнера Фога.
И даже без применения векторных команд Intel лучше оптимизирует код, повышая производительность на любом процессоре.
Цитата: бенчмаркосеки и писькомерщики вполне могут пастись в разнообразных профильных тестопрограммах
Причем здесь бенчмарки? Ну, будет декодироваться RAW или JPEG в 4 раза быстрее. Причем даже на старом Pentium 4, не говоря уж о новых процессорах. Пример: у меня когда-то был P4 2,4 ГГц. Смотреть HD-видео с применением обычных кодеков на нем было невозможно, не хватало мощности. С кодеками, оптимизированными под SSE2 - никаких проблем.
Всё дело, в том, что ALU, на которые вы так любите ссылаться, уже давно 128-разрядное (или даже 256-разрядное). Оптимальным образом оно будет работать, если выровнять данные по границе и загружать их в регистры сразу большими порциями, а не эмуляцией 32-разрядного режима. И как я уже выше говорил - на некоторых (реальных, из жизни) алгоритмах это дает аж 8-кратный прирост скорости.
Добавлено: Skif_off [more=pi.cpp]
Код: [no]#include <stdio.h>
int main() {
int r[2800 + 1];
int i, k;
int b, d;
int c = 0;
for (i = 0; i < 2800; i++) {
r[i] = 2000;
}
for (k = 2800; k > 0; k -= 14) {
d = 0;
i = k;
for (;;) {
d += r[i] * 10000;
b = 2 * i - 1;
r[i] = d % b;
d /= b;
i--;
if (i == 0) break;
d *= i;
}
printf("%.4d", c + d / 10000);
c = d % 10000;
}
return 0;
}[/no]