一个网站建设的课程设计书,网站建设一般多少钱比较合适,怎么做网站的网盘,wordpress模板区块链一、背景知识 CPU缓存#xff08;Cache Memory#xff09;#xff0c;是位于CPU与内存之间的临时存储器#xff0c;它的容量比内存小的多但是交换速度却比内存要快得多。高速缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾#xff0c;因为CPU运算速度要比…一、背景知识 CPU缓存Cache Memory是位于CPU与内存之间的临时存储器它的容量比内存小的多但是交换速度却比内存要快得多。高速缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾因为CPU运算速度要比内存读写速度快很多这样会使CPU花费很长时间等待数据到来或把数据写入内存。在缓存中的数据是内存中的一小部分但这一小部分是短时间内CPU即将访问的当CPU调用大量数据时就可避开内存直接从缓存中调用从而加快读取速度。 ----以上引自度娘百科懒呐- - 缓存中是由缓存行来管理的典型的缓存行大小为64bytes一次读入就是64bytes。即使仅仅想读入一个Int64实际上也是将其后的56bytes也读进来。 因此如果需要操作一个Length为8的Int64数组一次读入次次命中嗨吧~~ 二、栗子 设计了一个小栗子是累加一个二维Int64的数据 如果从一维循环那么类似于顺序读入这样应该能实现1次读入缓存后7次命中性能应该会好一些。 如果从二维循环那么读入一次缓存后面的就没办法命中了性能一定是底很多。 三、栗子代码 1 using System;2 3 namespace PerformanceOfCacheLineTest4 {5 class Program6 {7 private const Int64 ONE_DIMENSION 1024 * 1024;8 private const Int64 TWO_DIMENSION 64;9
10 static void Main(string[] args)
11 {
12 Int64[][] array new Int64[ONE_DIMENSION][];
13 for (int i 0; i ONE_DIMENSION; i)
14 {
15 array[i] new Int64[TWO_DIMENSION];
16 for (int j 0; j TWO_DIMENSION; j)
17 {
18 array[i][j] 0;
19 }
20 }
21
22 Console.WriteLine(starting....);
23
24 DateTime start System.DateTime.Now;
25 Int64 sum 0;
26 for (int i 0; i ONE_DIMENSION; i)
27 {
28 for (int j 0; j TWO_DIMENSION; j)
29 {
30 sum array[i][j];
31 }
32 }
33 DateTime end System.DateTime.Now;
34 Console.WriteLine(one dimension first: using (end - start).TotalMilliseconds);
35
36
37 start System.DateTime.Now;
38 for (int j 0; j TWO_DIMENSION; j)
39 {
40 for (int i 0; i ONE_DIMENSION; i)
41 {
42 sum array[i][j];
43 }
44 }
45 end System.DateTime.Now;
46 Console.WriteLine(two dimension first: using (end - start).TotalMilliseconds);
47
48 Console.WriteLine(...ended);
49 Console.Read();
50 }
51 }
52 } 四、栗子结果 五、结论 差距还是很明显的哟印证了假设。 作为一枚肉鸟学到新的东西总是让人耳目一新世界观都不一样了呢*_*。。。需要学习的东西还很多呀转载于:https://www.cnblogs.com/DexterDi/p/4371613.html