2的幂和按位与&——效率
2024-09-07 04:48:23
以前学生时代,只是完成功能就行,进入公司之后,由于产品的特殊性,需要非常考虑效率,发现有以下几个策略(该文不定时更新):
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开辟内存时)。
最新文章
- sublime_text_2 ubuntu下无法输入中文 解决方法
- 敏捷开发与jira
- JMeter学习-032-JMeter常见四种变量简介
- Linux开机后 systemd 自动启动 ceph osd mon进程
- 基于OpenCv的人脸检测、识别系统学习制作笔记之一
- POJ1046Color Me Less
- xlslib安装, aclocal-1.13: command not found, 安装升级autoconf-2.65.tar.gz, automake-1.13.tar.gz两个文件
- JDBC技术
- POJ 1113 Wall (凸包)
- 80C51 K1控制D1发光
- Hibernate-day03
- java-使用icepdf实现pdf转换成png
- SpringBoot系列 - 集成JWT实现接口权限认证
- Kubernetes部署SpringCloud(二) 部署ZUUL与服务 非host, 伸缩与负载均衡
- over(partition by)开窗函数的使用
- 谁说delphi没有IOCP库,delphi新的IOCP类库,开源中
- 破产姐妹第一季/全集2 Broke Girls迅雷下载
- [原]单片机/Stm32教程
- linux源码编译安装php出现 cannot find -lltdl
- 很有用的PHP笔试题系列三
热门文章
- Oracle数据库主外键 级联删除记录
- docker启动报错 docker: Error response from daemon: OCI runtime create failed: container_linux.go:348
- Python 关于列表字典的键值修改
- Cobbler本机使用VM装机配置方法
- Layout POJ - 3169
- mySql 常用命令 | 珠峰培训例子
- Windows Automation API和自动化测试
- [iOS] 利用 NSAttributedString 进行富文本处理
- 下载 python
- 【CSP膜你赛】大逃亡