Собственно вот: mmx/3dnow!/sse/sse2/sse3/sse4a/sse4.1/sse4.2/sse5/avx? Я по понятным причинам прдепочел бы только avx, но он не настолько распространен, чтобы заморачиваться.
Сейчас sse3 будет нормально. Это еще смотря что пишешь. Что-то "одноразовое" или что-то на долгое время.
Меня прельщает ссе4 из за наличия хардварного срс32 и комад работы со строками, я проверил на критичном участке - выигрыш почти на порядок. С ссе3 разница будет меньше и сильно. А ссе5 и ссе4а как я понял - чисто амдешная фишка?
А какого типа данные молотить надо? что является их источником? какие требования налагают? могут ли быть целыми числами, точкофиксированными, точкоплавающими? ИЛи просто битовые последовательности, не являющиеся числами?
Подавляющая часть данных - ансишные строки (длиной порядка 0-1000 байт), но сцуко хранящиеся в виде трех- и четырехмерных массивов представляющих из себя односвязные списки блоками по 64Кб. Тут тупо по индексу найти адрес - ~6000 тактов если просто 386ыми командами вычислять (ну всмысле первый расчет в серии, конечно, потом-то понятно быстрее). Источник: текстовые файлы, создаваемый специфическим софтом, который не стесняется затирать или обрезать то что ему ранее нравилось). Файлы находят в строгой зависимости друг от друга: в одном например лежат сами строки, в другом для каждой строки раписаны текстовые константы, которые надо найти в строке, в третьем - флаги соответствующих операций (целые числа), четвертый - результат обработки строки в тектосовом виде, типа: "найдено 100 раз", "не найдено", "частичное соответсттвие" и тд. А в целом нужны функции работы со строками, поиск, вставка, замена и тд.