Re[14]: 2D-Linq и оптимизация цифровых фильтров - 4
От: Mystic Artifact  
Дата: 05.08.20 18:06
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>В скалярном всё же 1 бранч на цикл + 1 бранч на тернарный оператор.

S>В обычном unsafe варианте мы имеем + 3 бранча на "если xmin<0", но они, похоже, хорошо предсказываются процессором. Более того, я не понимаю, каким хреном у unsafe получается вдвое меньше mispredictions чем у LinqScalar.
Я не знаю, но в том асме, что я видел — куча short-forward бранчей. Это то что почти все процессоры понимают, но я х.з.
Я пока вывел такую закономерность: мой проц выигрывает когда не ошибается в бранчах, но ему почти пофигу на их количество. Твой проц — напротив сильно выигрывает от уменьшения кол-ва бранчинга (что странно, ведь он помоднее моего). Unsafe версия так же содержит идексеры a * b + c которые в идеале должы пониматься процессорами, если правильно скомпилировано. Я пробовал вручныю их вынести в отнельную переменную — получалось только хуже.

На самом деле хотелось бы увидеть еще пару железок и тогда можно сделать выводы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.