cache line填充后运行时间问题

问题描述

cache line填充后运行时间问题

#include
#include

int main(int argc,char* argv[])
{
int len = 64*1024*1024;
int K =atoi(argv[1]);
int arr = (int)malloc(sizeof(int)*len);
int i;
for(i=0;i<len;i+=K)
{
arr[i]*=3;
}
return 0;
}

 按照http://blog.csdn.net/cool_way/article/details/41855595这篇文章说法,K的取值只有在
 16到32,64等64字节处 时间才会发生越变,可是我在Ubuntu上测试的结果却完全不同
 在1和2和4间变化较快,到了后面基本不变,这是什么原因,希望各位大牛解读

解决方案

不同的处理器缓存的大小、速度、架构、层次、结合性、缓存淘汰算法是不同的,作者只是根据他的处理器的经验写的,没有普遍性。

时间: 2024-08-04 12:04:36

cache line填充后运行时间问题的相关文章

一种Cache Line向量处理机概念

目前多核CPU都是保持各自的上下文,相互通信则依赖加锁/解锁以及共享内存实现.这种架构对于运行多任务.多线程的操作系统来说比较适合,而对于高性能计算则有点浪费. 其实,可以将多个计算核心组织为向量方式,每次访存都从Cache Line中抓取一整行数据,然后分头处理,类似SIMD方式,处理结果也是以Cache Line方式写回.这样的好处是不存在交叉访问,可以实现最高效率的计算/吞吐,如果待处理数据都是严格按照一个个Cache Line顺序排好,那么理论上可以实现最高效率的处理,主频为F,核心数为

java-求教下jxl的问题,数据填充后如何读取

问题描述 求教下jxl的问题,数据填充后如何读取 wb = Workbook.getWorkbook(new File(pathString)); WritableWorkbook wwb = Workbook.createWorkbook(response.getOutputStream(), wb,settings); 使用上面的代码对excel文件进行数据填充之后,我要怎么才能读取到填充之后的文件? 我一开始在填充之后使用 WritableWorkbook rwb = Workbook.c

Dissecting the Disruptor: Why it’s so fast (part two) – Magic cache line padding

原文地址:http://mechanitis.blogspot.com/2011/07/dissecting-disruptor-why-its-so-fast_22.html(因有墙移到墙内) We mention the phrase Mechanical Sympathy quite a lot, in fact it's even Martin's blog title.  It's about understanding how the underlying hardware oper

LINE上市后引发的一场社交软件宫斗戏

大家天天都在用聊天工具八卦,其实人家心里也有好多话想说,特别是LINE上市了,正所谓人红是非多,一场社交软件的宫斗戏也就来了.     窃窃私语状 BBM:听说那个韩国.还是日本来的LINE这两天正特别风光,吹牛逼说自己在资本市场比捉精灵那个Pokemon go游戏还火呢. Viber:啊!就那个日本.泰国.越南.印度尼西亚满大街都在用的卖萌聊天室吗?怪不得前两天在香港希慎广场路过,满屏的广告,原来是为IPO做预热,真有钱. BBM:自从黑莓手机被打入冷宫,我都抬不起头来了,好不容易建立起来的印

计算机体系结构4_分级缓存

一,处理器和内存系统结构                                                        主存在内存体系结构距离CPU最远端,缓存在内存体系结构距离CPU最近端.                EU直接读取L1指令缓存,通过LSU读/写L1数据缓存,在LSU与L1数据缓存之间是write buffer,用于回写.                 write buffer与write-combining buffers连接,后者通过系统总线与主存连接.

浅析x86架构中cache的组织结构

cache通常被翻译为高速缓冲存储器(以下简称"高速缓存"),虽然现在cache的含义已经不单单指CPU和主存储器(也就是通常所谓的内存)之间的高速缓存了,但在本文中所谓的cache依旧特指CPU和主存储器之间的高速缓存. 这篇文章诞生的源头是我之前在stackoverflow看到的一个问题: Why is transposing a matrix of 512×512 much slower than transposing a matrix of 513×513 ? 这个问题虽然国

剖析Disruptor:为什么会这么快?(二)神奇的缓存行填充

我们经常提到一个短语Mechanical Sympathy,这个短语也是Martin博客的标题(译注:Martin Thompson),Mechanical Sympathy讲的是底层硬件是如何运作的,以及与其协作而非相悖的编程方式. 我在上一篇文章中提到RingBuffer后,我们收到一些关于RingBuffer中填充高速缓存行的评论和疑问.由于这个适合用漂亮的图片来说明,所以我想这是下一个我该解决的问题了.(译注:Martin Thompson很喜欢用Mechanical Sympathy这

能过7个示例我们来学习一下CPU缓存(Cache)

CPU cache一直是理解计算机体系架构的重要知识点,也是并发编程设计中的技术难点,而且相关参考资料如同过江之鲫,浩瀚繁星,阅之如临深渊,味同嚼蜡,三言两语难以入门.正好网上有人推荐了微软大牛Igor Ostrovsky一篇博文<漫游处理器缓存效应>,文章不仅仅用7个最简单的源码示例就将CPU cache的原理娓娓道来,还附加图表量化分析做数学上的佐证,个人感觉这种案例教学的切入方式绝对是俺的菜,故而忍不住贸然译之,以飨列位看官. 原文地址:Gallery of Processor Cach

利用Cache缓存数据DataTable数据提高大数据量访问性能

cache|访问|缓存|数据|性能 引言:在数据量不大的情况下,程序怎么写基本上性能差别不大,但是当我们面对数以万计的数据的时候,我想性能就是个不得不考虑的问题了,每写一个方法,每填充一笔数据都要考虑到性能问题,否则服务器将承担巨大的执行开销,如果服务器性能不好可能立即就死在那里了,所以在大数据量频繁访问的页面上,我们就必须考虑如何提高页面的性能了,本文将提供一种用cache提高访问性能的方法来解决此问题,在很大程度上提高页面加载数据的性能.本文列举的是论坛版块中帖子列表页面加载数据的实例.正文