在一个循环中,为了提高缓冲区使用效率,不应该同时写超过4个截然不同的内存位置

package mainimport ("math""testing"
)func write()  {const ITERATIONS = math.MaxInt32const ITEMS  = 1 << 24const MASK = ITEMS - 1var arrayA, arrayB,arrayC,arrayD,arrayE,arrayF [ITEMS]bytefor i := ITERATIONS; i > 0; i-- {slot := i & MASKb := byte(i)arrayA[slot] = barrayB[slot] = barrayC[slot] = barrayD[slot] = barrayE[slot] = barrayF[slot] = b}
}func writeCombining()  {const ITERATIONS = math.MaxInt32const ITEMS  = 1 << 24const MASK = ITEMS - 1var arrayA, arrayB,arrayC,arrayD,arrayE,arrayF [ITEMS]bytefor i := ITERATIONS; i > 0; i-- {slot := i & MASKb := byte(i)arrayA[slot] = barrayB[slot] = barrayC[slot] = b}for i := ITERATIONS; i > 0; i-- {slot := i & MASKb := byte(i)arrayD[slot] = barrayE[slot] = barrayF[slot] = b}
}func BenchmarkWrite(b *testing.B) {for i := 0; i < b.N; i++ {write()}
}func BenchmarkWriteCombining(b *testing.B) {for i := 0; i < b.N; i++ {writeCombining()}
}
pkg: ......
cpu: Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
BenchmarkWrite
BenchmarkWrite-4                       1    6315499300 ns/op
BenchmarkWriteCombining
BenchmarkWriteCombining-4              1    5191109500 ns/op
PASS

参考
http://mechanical-sympathy.blogspot.com/2011/07/write-combining.html

write combining相关推荐

  1. R语言ggplot2可视化将两个dataframe可视化的结果组合在一起实战:combining two plots from different data.frames

    R语言ggplot2可视化将两个dataframe可视化的结果组合在一起实战:combining two plots from different data.frames 目录 R语

  2. 智源大师讲座丨以色列科学与人文科学院院长David Harel: Combining Modeling and AI

    以色列科学与人文科学院院长David Harel于2021年12月16日正式加盟智源学术顾问委员会(BAAI Academic Advisory Committee),他将于2022年1月18日19: ...

  3. Hinton神经网络公开课10 Combining multiple neural networks to improve generalization

    为什么80%的码农都做不了架构师?>>>    本文由码农场同步,最新版本请查看原文:http://www.hankcs.com/ml/hinton-combining-multip ...

  4. RxJava操作符(四)Combining

    RxJava操作符(四)Combining 原文链接 http://blog.chinaunix.net/uid-20771867-id-5197584.html 上一篇文章中我们了解了如何对数据进行 ...

  5. RxJava 学习笔记(八) --- Combining 结合操作

    @(Rxjava学习笔记) RxJava 学习笔记(八) - Combining 结合操作 RxJava 学习笔记八 Combining 结合操作 StartWith 在数据序列的开头插入一条指定的项 ...

  6. Pandas学习笔记(6)Renaming and Combining

    1.理论部分 1.重命名函数rename reviews.rename(columns={'points': 'score'}) reviews.rename(index={0: 'firstEntr ...

  7. Combining Character

    第一次写segmentfault,欢迎大家提意见以便改进. 今天要讨论的是关于字符编码的一些问题,源自一次项目周会,因网络上没有相关文章,现在刚好能总结一下. 1. 首先来看几张有意思的现象: (1) ...

  8. 【翻译论文】An Architecture Combining Convolutional Neural Network (CNN) and Support Vector Machine (SVM)

    [翻译论文]An Architecture Combining Convolutional Neural Network (CNN) and Support Vector Machine (SVM) ...

  9. Write Combining Buffer

    现代CPU使用了很多技术来降低对内存存取数据的延时,因为CPU执行的速度实在是太快了,在从内存存取数据的约120ns中,可以执行数百条指令. 其中多级的缓存架构就是为了减少这种延时,来提高CPU的利用 ...

  10. [半监督学习] Combining Labeled and Unlabeled Data with Co-Training

    论文地址: Combining Labeled and Unlabeled Data with Co-Training 会议: COLT 1998 任务: 分类 A FORMAL FRAMEWORK ...

最新文章

  1. APP开发两年的心得:App代码架构设计(1)
  2. 菜鸟学算法一基础知识篇
  3. python读文件操作-python 之文件操作
  4. addShutdownHook钩子
  5. .NET设计模式(5):工厂方法模式(Factory Method)
  6. oracle中nvl()函数
  7. django-celery使用
  8. 判断CPU是大端还是小端
  9. LeetCode 1814. 统计一个数组中好对子的数目(哈希)
  10. python mongodb查询速度优化_Mongodb 3 查询优化(语句优化、建索引)
  11. 云计算数据中心Spine-Leaf模型简介
  12. Atitit 查询优化器的流程attilax总结
  13. [Python]经纬度转换
  14. java 调用linux openoffice_Linux_ubuntu下搭建open offcie开发环境,最近在使用openoffice(以后简称oo - phpStudy...
  15. 如何安装M26F1 5G路由器
  16. android进入微信加好友页面,Xposed-微信自动加好友功能实现2--自动跳转验证申请页面...
  17. Laravel Eloquent:API资源
  18. 计算机表示图形的几种方法。
  19. android 计步器 开发,Android计步器开发
  20. Python得到前面12个月的数据

热门文章

  1. 防范于未“燃”|涂鸦智慧社区推出“黑科技”,电瓶车禁入电梯智慧方案
  2. 数据结构:查找与排序
  3. CENTOS6 安装配置 pptpd 心得
  4. 魅力主播曹启泰《上班这点事》经典语录
  5. matlabnbsp;pcode命令nbsp;生成…
  6. 周易六十四卦—水泽节卦
  7. Lambda表达式比较foreach使用
  8. CAD输出为PDF至A4大小
  9. Python 适合初学编程的人学吗?
  10. 业务规范之springboot整合swagger2