Оптимизация Времени Выполнения Программы На C++ (Удаление Условных Переходов)

При оптимизации времени выполнения алгоритма, использующего ЛДПК декодер, профайлер привели к появлению функции, которая вычисляет следующее значение:

Оптимизация времени выполнения программы на C++ (удаление условных переходов)

Где а И б - целые числа.

Количество вызовов исчислялось миллионами, а реализация была достаточно простой и незамысловатой:

  
   

int LLR(int a, int b) { if (a>0) return (b>0) ? __min(a,b) : -__min(a,-b); else return (b>0) ? -__min(-a,b) : __min(-a,-b); }

По сути, функция состоит из трех последовательных операций сравнения.

Это дает (с учетом оптимизации компилятора) два (если числа имеют разные знаки) или три (если один) условных перехода для получения результата.

Вспоминая потенциальные проблемы конвейер При большом количестве условных переходов было решено сократить их количество или вообще избавиться от них.

Чтобы оценить производительность, небольшой тестовый проект

#include <Windows.h> static inline int LLR(int a, int b) {

Теги: #программирование #c++ #Алгоритмы #оптимизация программ #программирование #C++ #Алгоритмы

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.