记录一个在StackOverflow上看到一个十分有趣的问题:问题

  高票答案的优化方法:

  首先找到罪魁祸首:

if (data[c] >= 128)
sum += data[c];

  优化方案使用位操作:

int t = (data[c] - 128) >> 31;
sum += ~t & data[c];

  正数右移31一定为0,负数右移31一定为-1。再取反进行求&(按位与),0与任何数的&为0,-1与任何数的&为数本身。这样就巧妙的避开分支预测了,可以加速很多。

最新文章

  1. python 中的map(), reduce(), filter
  2. 术&道
  3. C++异常层次结构图
  4. 百度API使用--javascript api进行多点定位
  5. 学习cocos-js的准备工作
  6. Definition Questions
  7. 使用Select命令创建菜单
  8. PHP开篇之环境的搭建
  9. firefly的rpc。。
  10. win8开机密码忘了怎么办
  11. OGR 官方文档
  12. POJ 1274 The Perfect Stall 水二分匹配
  13. SpringMVC访问静态资源[转]
  14. 阿里云ECS安装Cadvisor报错
  15. redis的hash类型!!!!
  16. Android中的WeakReference 弱引用
  17. DevOps 10秒钟进阶大师之路
  18. C++的静态联编和动态联编
  19. web API分类
  20. Asp.Net_上传文件(ftp、webClient、webService)

热门文章

  1. 《爬虫学习》(三)(requests库使用)
  2. CSS控制 文字超出部分显示省略号
  3. 树莓派安装raspbian并配置开发环境
  4. cmake 单个目录多个文件的情况
  5. 洛谷P1049装箱问题(01背包)
  6. handler method 参数绑定
  7. 关于emoji表情,支持在app端发送web端显示,web端发送给app端显示,web与wap端互相显示。
  8. C++中宏的定义与用法(现已被内联函数所代替)
  9. 常用的php函数
  10. 树莓派 Ubuntu mate 16.04 下开启vncserver(自动启动+改分辨率)