write combining
在一个循环中,为了提高缓冲区使用效率,不应该同时写超过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相关推荐
- R语言ggplot2可视化将两个dataframe可视化的结果组合在一起实战:combining two plots from different data.frames
R语言ggplot2可视化将两个dataframe可视化的结果组合在一起实战:combining two plots from different data.frames 目录 R语
- 智源大师讲座丨以色列科学与人文科学院院长David Harel: Combining Modeling and AI
以色列科学与人文科学院院长David Harel于2021年12月16日正式加盟智源学术顾问委员会(BAAI Academic Advisory Committee),他将于2022年1月18日19: ...
- Hinton神经网络公开课10 Combining multiple neural networks to improve generalization
为什么80%的码农都做不了架构师?>>> 本文由码农场同步,最新版本请查看原文:http://www.hankcs.com/ml/hinton-combining-multip ...
- RxJava操作符(四)Combining
RxJava操作符(四)Combining 原文链接 http://blog.chinaunix.net/uid-20771867-id-5197584.html 上一篇文章中我们了解了如何对数据进行 ...
- RxJava 学习笔记(八) --- Combining 结合操作
@(Rxjava学习笔记) RxJava 学习笔记(八) - Combining 结合操作 RxJava 学习笔记八 Combining 结合操作 StartWith 在数据序列的开头插入一条指定的项 ...
- Pandas学习笔记(6)Renaming and Combining
1.理论部分 1.重命名函数rename reviews.rename(columns={'points': 'score'}) reviews.rename(index={0: 'firstEntr ...
- Combining Character
第一次写segmentfault,欢迎大家提意见以便改进. 今天要讨论的是关于字符编码的一些问题,源自一次项目周会,因网络上没有相关文章,现在刚好能总结一下. 1. 首先来看几张有意思的现象: (1) ...
- 【翻译论文】An Architecture Combining Convolutional Neural Network (CNN) and Support Vector Machine (SVM)
[翻译论文]An Architecture Combining Convolutional Neural Network (CNN) and Support Vector Machine (SVM) ...
- Write Combining Buffer
现代CPU使用了很多技术来降低对内存存取数据的延时,因为CPU执行的速度实在是太快了,在从内存存取数据的约120ns中,可以执行数百条指令. 其中多级的缓存架构就是为了减少这种延时,来提高CPU的利用 ...
- [半监督学习] Combining Labeled and Unlabeled Data with Co-Training
论文地址: Combining Labeled and Unlabeled Data with Co-Training 会议: COLT 1998 任务: 分类 A FORMAL FRAMEWORK ...
最新文章
- APP开发两年的心得:App代码架构设计(1)
- 菜鸟学算法一基础知识篇
- python读文件操作-python 之文件操作
- addShutdownHook钩子
- .NET设计模式(5):工厂方法模式(Factory Method)
- oracle中nvl()函数
- django-celery使用
- 判断CPU是大端还是小端
- LeetCode 1814. 统计一个数组中好对子的数目(哈希)
- python mongodb查询速度优化_Mongodb 3 查询优化(语句优化、建索引)
- 云计算数据中心Spine-Leaf模型简介
- Atitit 查询优化器的流程attilax总结
- [Python]经纬度转换
- java 调用linux openoffice_Linux_ubuntu下搭建open offcie开发环境,最近在使用openoffice(以后简称oo - phpStudy...
- 如何安装M26F1 5G路由器
- android进入微信加好友页面,Xposed-微信自动加好友功能实现2--自动跳转验证申请页面...
- Laravel Eloquent:API资源
- 计算机表示图形的几种方法。
- android 计步器 开发,Android计步器开发
- Python得到前面12个月的数据