Что касается вашего второго вопроса, теоретический расчет FLOPS не слишком сложен. Это можно разбить примерно на:
(Количество ядер) * (Количество исполнительных блоков / ядро) * (циклов / секунда) * (Операции блока выполнения / цикл) * (операции с плавающей запятой на регистр / Операция блока выполнения)
Core-2 Duo имеет 2 ядра и 1 исполнительный модуль на ядро. регистр SSE имеет ширину 128 бит. Число с плавающей запятой имеет ширину 32 бита, поэтому вы можете хранить 4 числа с плавающей запятой в каждом регистре. Я предполагаю, что исполнительный блок выполняет 1 операцию SSE за цикл. Так и должно быть:
2 * 1 * 2,8 * 1 * 4 = 22,4 GFLOPS
, что соответствует:
http://www.intel.com/support/processors/sb/cs-023143.htm
Это число, очевидно, является чисто теоретическим лучшим вариантом исполнения. Производительность в реальном мире, скорее всего, не приблизится к этому по ряду причин. Вероятно, не стоит пытаться напрямую соотносить флопы с фактическим временем выполнения приложения, вам лучше попробовать вычисления, используемые вашим приложением.