Ручная оптимизация. Под что стоит оптимизировать а под что - нет?

Тема в разделе "WASM.ASSEMBLER", создана пользователем xRom2, 11 дек 2011.

  1. xRom2

    xRom2 New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2011
    Сообщения:
    63
    Собственно вот: mmx/3dnow!/sse/sse2/sse3/sse4a/sse4.1/sse4.2/sse5/avx? Я по понятным причинам прдепочел бы только avx, но он не настолько распространен, чтобы заморачиваться.
     
  2. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    Сейчас sse3 будет нормально. Это еще смотря что пишешь. Что-то "одноразовое" или что-то на долгое время.
     
  3. xRom2

    xRom2 New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2011
    Сообщения:
    63
    Меня прельщает ссе4 из за наличия хардварного срс32 и комад работы со строками, я проверил на критичном участке - выигрыш почти на порядок. С ссе3 разница будет меньше и сильно. А ссе5 и ссе4а как я понял - чисто амдешная фишка?
     
  4. s_d_f

    s_d_f New Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    342
    SSE4A амдешная. Есть XOP и FMA4, SSE5 амд хотели сделать но потом передумали.
     
  5. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    540
    А какого типа данные молотить надо? что является их источником? какие требования налагают? могут ли быть целыми числами, точкофиксированными, точкоплавающими? ИЛи просто битовые последовательности, не являющиеся числами?
     
  6. xRom2

    xRom2 New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2011
    Сообщения:
    63
    Подавляющая часть данных - ансишные строки (длиной порядка 0-1000 байт), но сцуко хранящиеся в виде трех- и четырехмерных массивов представляющих из себя односвязные списки блоками по 64Кб. Тут тупо по индексу найти адрес - ~6000 тактов если просто 386ыми командами вычислять (ну всмысле первый расчет в серии, конечно, потом-то понятно быстрее). Источник: текстовые файлы, создаваемый специфическим софтом, который не стесняется затирать или обрезать то что ему ранее нравилось). Файлы находят в строгой зависимости друг от друга: в одном например лежат сами строки, в другом для каждой строки раписаны текстовые константы, которые надо найти в строке, в третьем - флаги соответствующих операций (целые числа), четвертый - результат обработки строки в тектосовом виде, типа: "найдено 100 раз", "не найдено", "частичное соответсттвие" и тд. А в целом нужны функции работы со строками, поиск, вставка, замена и тд.