- 1
#define HESHELME_BESHELME(x, y) (((x)>0)<<2 | ((y)>0)<<1 | ((x) > ((x)*(y) > 0 ? (y) : -(y))))
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+102
#define HESHELME_BESHELME(x, y) (((x)>0)<<2 | ((y)>0)<<1 | ((x) > ((x)*(y) > 0 ? (y) : -(y))))
двумерное "квантование" точки
ЗЫ: квантовать хочется в [0..7], последовательность не обязательна.
ahalai-mahalai
x вычисляется трижды, y - четырежды.
При срабатывании оптимизации expression elimination x и y по одному разу вычисляются.
>А функцию вообще никак нельзя было использовать?
Можно, но автор не подумал.
HESHELME_BESHELME(foo(), bar())
где foo(), bar() — функции с побочными эффектами.
И что тут можно соптимизировать?
--
Ваш Кэп
И что тут можно соптимизировать?
Лол. Если функции с побочными эффектами, тогда макрос нельзя применять. Каждый раз x и y новые значения будет в пределах макроса принимать или рушить логику работы программы.
--
Ваш Кэп
Ну так о том и речь. Только тогда о этом точно должен знать мейнтейнер кода, что лично я считаю лишним неоправданным напрягом.
Зачем выкручивался, как уж на сковородке? Сразу бы сказал, если знал, что макрос применять крайне не желательно. Это противоречит безопасному проектированию и поддержке.
И что тут можно соптимизировать?
Как ты определил, что параметры макроса вызывают побочные эффекты? Из данного куска кода определить это нельзя. Поэтому голословно утверждать это нужно. Там может простое использование и никаких побочных эффектов: И уж тем более нельзя сказать с учетом возможной оптимизации expression elimination, что параметры функции вычисляются точно несколько раз.
Но использование автором макросов - я некоим образом не оправдываю.
Какой физический смысл вкладывается в слово "квантование" и где такое применяется?
Конкретно этот код использовался при обнаружении пешеходов на изображении.
В качестве обучаемых признаков использовал гистограмму ориентированных градиентов (HOG). В локальной окрестности находится направление градиента - угол [0..360), который квантовался в моем случае в [0..8). Из всех таких квантованных углов как раз и строится гистограмма.
если интересно, http://courses.graphicon.ru/main/cg/2011/assignment02
а вообще, имхо, машграф был самый классный курс за все время обучения
Это вореции?
https://www.youtube.com/watch?v=u3TjWRmVMQE
а вот лонглисен
https://www.youtube.com/watch?v=Wb7eV47YOm4