Здравствуйте, VotVopros, Вы писали:
VV>Здравствуйте!
VV>ЗАДАЧА
VV>Пишу sw просмотра файла в некотором граф. векторном формате.
VV>Содержимое файла можно упрощенно представить как совокупность координат ломанных.
VV>При отображении на экран произвожу преобразование координат из внутренних в экранные.
VV>Преобразование имеет вид:
VV>x' = k1*x + b1
VV>y' = k2*y + b2
VV>ВОПРОС:
VV>Преобразование выполняется очень часто (к тому же в файле порядка млн. точек)
VV>Это фактически умножение вектора на число и сложение вектора с числом.
VV>Есть желание пооптимизировать функцию преобразования координат.
VV>КАК? ПОСОВЕТУЙТЕ!
VV>Была идея использовать для умножения векторов MMX инструкции.
VV>НО
VV>1) Нет желания писать на ассемблере, а библиотека Intel (подключаемый файл #include "mmintrin.h") похоже доступна только с VC 7.0.Так просто библиотеки для MMX на просторах INET я не встретил. К тому же я пока сижу на Builder, и даже , если соберусь перейти на VC, не хочется ограничивать себя последней версией VC.
VV>2) У меня массив из миллиона int, а для MMX это придётся свести к порциям по 4 short. Не факт, что выйдет выигрыш.
VV>ЧТО ВЫ СКАЖЕТЕ НАСЧЁТ ММХ?
VV>заранее Спасибо!!!
если нет возможности попользовать Intel C compiler, то тогда ручками — ММХ, SSE, SSE2. Прибыль получится очень даже ощутимая — ускорение чтения/записи из кучи, векторное умножение, сложение, вычитание, .... раскрутка циклов. Суммарно можно наскрести (в зависимости от реализации конечно
) от 2 до 10 раз совершенно реально.