Здравствуйте, TarasCo, Вы писали:
TC>Вот это очень интересно. А у вас количество рабочих потоков не равно что-ли количеству ядер? И по какому принципу вы его выбираете?
Юзер выбирает, сколько потоков ставить (максимум — кол-во логических ядер).
Новые результаты. Если не использовать манипуляции с маской, то второй вариант таки обгоняет первый, но только при определенных условиях — если размер фрейма меньше размера L3 кеша (у моего core i5 он 8 метров), то обгон есть, если уже больше — разницы нет. Это отмечается только при условии использования всех ядер.
Ну а если пользуем не все ядра, например 2 из 4, то надо обязательно на процесс маску вешать, чтобы он юзал только 2 ядра — это дает (в моем синтетическом случае) эффект.
Например, размер кадра 1440х900 (ну у меня моник такой), 32битный цвет = ~5Mbytes. FPS видео и "алгоритм" не берем в учет.
Заводим 4 ядра и результаты такие: первый 43%, второй 58% (проценты — кол-во обработанных кадров).
Заводим 2 ядра без affinity mask: оба по 18%
Заводим 2 ядра с affinity mask 0x03: 22%, 27%
Это были запуски в студии (debug версия, но не в debug режиме).
А потом запустил из эксплорера последний вариант с двумя ядрами и немного прифигел

— 34%, 49%. Смотрел TMonitor-ом частоту работы ядер — множитель (забыл как оно называется) выходит за стандартные пределы, что есть гут

После чего снова первый тест повторил с 4мя ядрами — 71%, 82%. Че-то студия мутит...
Короче, выводы я определенные сделал, сейчас попробую изменить "алгоритм" в тесте. На данный момент там тупо синус значений одного буфера пишется в другой.