码迷,mamicode.com
首页 > 其他好文 > 详细

2的幂和按位与&——效率

时间:2019-09-30 21:49:02      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:表达   特殊   data-   操作   data   div   更新   使用   学生时代   

以前学生时代,只是完成功能就行,进入公司之后,由于产品的特殊性,需要非常考虑效率,发现有以下几个策略(该文不定时更新):
hash%length==hash&(length-1)的前提是length是2的n次方
当 B满足是2的n次方时,有 A%B == A & (B-1)
使用后者的效率比求余操作高,在对效率要求高的场合,建议使用后者(我目前的应用场景主要是两个,hash桶和ring队列)。
当B满足是2的n次方时, (A + B-1) &  (~(B-1))的结果会是2的n次方,且是向后扩展A的,即表达式结果大于等于A的值,但是保证了是2的n次方。使用这个操作,可以提高malloc的效率,尤其是动态变化的数据结构(ring_buff、ring_queue)时(这个主要用于malloc开辟内存时)。

 

2的幂和按位与&——效率

标签:表达   特殊   data-   操作   data   div   更新   使用   学生时代   

原文地址:https://www.cnblogs.com/yangguang-it/p/11613999.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!