需要额外注意两点:
- 一个大的struct数组,要注意字节对齐带来的不必要消耗 。内存敏感的话,调整字段的顺序以节约空间 。
- 一个大的struct数组,可以故意加些padding的字段,然item尽可能的按照cache line的长度对齐,可以提升访问性能 。
关于分支预测的案例,可以看看我写的这个分析文章:《用重复写入代替if判断,减少程序分支》
golang标准库中也有个很好的例子:《How does ConstantTimeByteEq work?》
一个简单的if x==y,考虑了攻击者对计算时间的猜测,考虑了分支预测的损耗 。
其他的关于分支预测的优化技巧,这篇也不错:《浅谈利用分支预测提高效率》
在日常的开发中,换个写法是有可能会提高性能的:
switch variable{ case "a": // 根据业务特点,把最可能的分支放在最前 。提高分支预测的成功率 // do something case "b": // do something}OK,文章到这里就结束了 。
本人也才写了两年的golang,难免有很多错误之处,还请读者不吝赐教,谢谢!
【用golang开发系统软件的一些细节】
经验总结扩展阅读
- 持续集成指南:GitLab 的 CI/CD 工具配置与使用
- 信用卡怎么查消费明细
- 消费贷款申请产生的费用高吗
- oppo账号的姓名怎么修改
- 租房可以换锁芯吗合法么 租房换锁费用谁来承担
- 特斯拉可以用家用电充电吗
- 拆线多久可以用祛疤膏?
- 卫生间和厨房用什么瓷砖?
- 肉苁蓉副作用是什么
- 计米器怎么设置参数