读书人

IF语句优化解决方法

发布时间: 2012-01-18 00:23:26 作者: rapoo

IF语句优化
像下面的IF语句,大家都知道放在循环语句中将会非常耗时,我想请问各位有没有办法可以不用IF语句来达到同样的效果?!

这样可以吗?:BYTE(R) ???

if (R <0) R=0;
else if (R> 255) R=255;
if (G <0) G=0;
else if (G> 255) G=255;
if (B <0) B=0;
else if (B> 255) B=255;

[解决办法]
R = R <0? 0: (R> 255 ? 255:R)
G = G> 255? 255:G
B = B <0? 0: (B> 255 ? 255:B)
用三元表达式就能解决.
[解决办法]
某些CPU可以进行优化

如果实在是需要优化(估计是为了避免最大效率的利用CPU流水线)

可以先不对RGB进行取值范围矫正,直到最后显示出去的时候再矫正
[解决办法]
你的R、G、B值是在哪获取的?数据类型定义是单字还是双字?

这段代码本身没法再优化。根据实际情况,可在其他地方优化。如,在获取R/G/B的同时做判断。

读书人网 >VC/MFC

热点推荐