加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 可以将签名的无符号整数进行排序,通过消除> =比较的需要

发布时间:2020-12-16 05:21:46 所属栏目:百科 来源:网络整理
导读:说我在我的程序中有一个真正的性能关键环节,我需要检查一个点是否在一个矩形内,但是我在编译时知道下限总是为0,如下所示:(x = 0 = 0 x width y height) 我可以通过对x和y进行类型冲突来排除前两个比较,以无符号整数(例如,在C)中使用类似于reinterpret_cast(
说我在我的程序中有一个真正的性能关键环节,我需要检查一个点是否在一个矩形内,但是我在编译时知道下限总是为0,如下所示:(x> = 0&&> = 0&& x< width&& y< height) 我可以通过对x和y进行类型冲突来排除前两个比较,以无符号整数(例如,在C)中使用类似于reinterpret_cast()或一个联合的东西,因为符号位将保证任何负数将变为无符号int足够大,无法检查边界?如果是这样,你将如何用C或其他语言来实现?可以通过这样做获得任何性能改进吗?

解决方法

是的,当您测试有符号整数,下限为零时,这是一个非常有效的优化.实际上,这是一个常见的优化,您的编译器几乎肯定会自动执行;通过自己的方式模糊你的代码很可能是一个无意义的过早优化.

我刚刚在GCC 4.9上测试了这一点,并通过检查生成的汇编代码在-O1及以上自动执行此优化来确认.我希望所有现代编译器都这样做.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读