А Int32 или Single?
В теории Single чуть быстрее. Но вот практически разница может качнуть весы в любую сторону. Притом зависит от процессора.
Мне же тогда придётся репрезентативные test case'ы писать на каждое тестирование, правильно?
Я выше уже давал ссылки на руководство по оптимизации от интела и Агнера Фога.
Там приводятся советы по оптимизации. Половина из них относятся к произвольному языку. И могут быть выполнены зарания. К примеру вынос условия из цикла. Раскрутка цикла.
А вот другую часть кроме как писать тесты никак не получиться. И достаточно универсальная чем меньше в цикле команд тем быстрее код.
Хотя со временем уже запоминаешь такты. Цифры примерные.
Деление 12-100 тактов. В зависимости от длины данных.
Все операции тригонометрии основаны на делении порядка 100 тактов.
Умножение 6-24 В зависимости от длины данных.
Сложение 1-3 такта
Битовые операции 0.3-1 такта
Доступ к памяти:
-Доступ в случайном порядке
--КЭШ L1 3 такта
--КЭШ L2 10 тактов.
--КЭШ L3 30 тактов
--ОЗУ 70 тактов.
-Последовательный доступ к памяти:
3-10 такта
Ветвление:
Без промаха 2 такта.
С промахом 12-14 тактов. Любой if примерно столько и стоит.