>对这个1000000*100的数组(占用100M内存)进行频繁的随机访问,如访问ppb[i][j]时,只要i是变化的,效率会比较小的数组(比如1000*100)要低很多倍。 用这几年intel的cpu来解释的话,1000*100完全放得下L3,100M完全放不下L3。 解决办法只有改进内存存取模式,别这么大范围的随机读。
char *ppb; ppb=(bool*)malloc(sizeof(char)*1000000*100); if (NULL==ppb) exit(1); for(i=0;i<1000000;i++) { memset(ppb+i*100,0,100); }
CPU 的缓存命中率低了
在文件大小相同的前提下: 读刚读过的文件比头次读没读过的文件快 读转速快的硬盘上的文件比读转速慢的硬盘上的文件快 读没有磁盘碎片的文件比读有磁盘碎片的文件快 读文件不处理比边读边处理快 单线程从头到尾一次读文件比多线程分别读文件各部分快(非固态硬盘上) 读固态硬盘上的文件比读普通硬盘上的文件快
3,881
社区成员
9,054
社区内容
加载中
试试用AI创作助手写篇文章吧