Получи случайную криптовалюту за регистрацию!

​Сейчас пишу небольшой софтварный растеризатор. Ну, и дошел до | VG

​Сейчас пишу небольшой софтварный растеризатор. Ну, и дошел до процесса оптимизации.

Естественно, основное время занимает код, выполняющийся для каждого пикселя, так как на экране их миллионы.
Перед началом оптимизаций я решил "развернуть" код, то есть выписать некоторые функцию напрямую, а не вызывать их.

На скриншоте два участка кода, которые делают абсолютно одно и то же. Но второй работает в два раза быстрее! А я всего лишь считаю скалярное произведение вручную! Это жесть. Уточню, что оптимизации у компилятора включены.

Оказалось, что когда я не вызываю функции, компилятор делает всё самым простым способом в регистрах. Но если я вызываю функции, то он начинает писать в/читать из стека.

Вот так иногда супер простые действия могут сильно ускорить код.