Здравствуйте, IvanD, Вы писали:
ID>Здравствуйте, Кирилл Осенков, Вы писали:
КО>>А что ты имеешь ввиду ...известные мне алгоритмы под эту задачу не подходят никоим образом?
Не удается MMX прикрутить? Или как?
ID>Дело в том, что MMX предоставляет возможность сравнивать сразу 8 байт (элементов массива), ну и пересылать между регистрами и памятью тоже по 8 байт, за счет этого и достигается оптимизация. Вопрос в том, как это реализовать, чтобы еще и массив сортировался.
Я не експерт по MMX и низкоуровневому кодингу, но, по-моему, MMX тут не поможет. Дело в том, что в задаче сортировки основную роль играют обращения к памяти, а им по барабану, какими инструкциями они делаются. Размер-то массива один и тот же!
Ну а если я все же не прав, то вот такая идея:
выровняй длину массива по 8, и представь, что это 8 массивов, вдвинутых друг в друга:
|arr1_1|arr2_1|arr3_1|arr4_1|arr5_1|arr6_1|arr7_1|arr8_1|arr1_2|...
используй MMX для одновременной сортировки этих 8ми массивов, а потом слей их в один массив.
... << RSDN@Home 1.1 beta 2 >>