cpu进行运算之前会有一个步骤,就是把内存的数据把拿到高速缓存区(L1,L2,...)。
一般说来,当访问内存的某个位置时,会把这个位置附近的数据也搬过去,跟硬盘到内存的pagecache相似。
如果频繁命中这个高速缓存区,可以大大提高程序的运行速度。
所以如果用一个二元对表示一次运算(运行时刻,数据位置),
将此二元序列关于时间排序,那么我们就应该让相邻二元对的数据位置尽可能接近。
见两个程序:
const int N = 1 << 12; typedef double Type; Type a[N][N], b[N][N], c[N][N]; int main() { for (int i = 0; i < N; ++i) { for (int j = 0; j < N; ++j) { a[j][i] = b[j][i] + c[j][i]; } } return 0; }
运行时间为:
real 0m1.218s
user 0m1.139s
sys 0m0.079s
const int N = 1 << 12; typedef double Type; Type a[N][N], b[N][N], c[N][N]; int main() { for (int i = 0; i < N; ++i) { for (int j = 0; j < N; ++j) { a[i][j] = b[i][j] + c[i][j];//注意i,j的位置 } } return 0; }
运行时间为:
real 0m0.184s
user 0m0.107s
sys 0m0.078s
可以看到,当数据量一大这个内存到高速缓存的搬运时间也是挺吓人的。
相关推荐
调用 servlet 并完成生成高速缓存的输出之后,会创建包含 servlet 的输出和副作用的高速缓存条目。这些副作用可能包含对其他 servlet 或 Java Server Pages(JSP)文件的调用,或有关条目的元数据,包括超时和条目...
本书的第二部分适合已基本掌握8086/8088汇编语言的程序员,可作为学习保护方式编程技术的教材或参考书,也可作为其他人员了解高档微处理器和保护方式编程技术的参考书,还可作为程序员透彻地了解Windows程序设计技术...
本书的第二部分适合已基本掌握8086/8088汇编语言的程序员,可作为学习保护方式编程技术的教材或参考书,也可作为其他人员了解高档微处理器和保护方式编程技术的参考书,还可作为程序员透彻地了解Windows程序设计技术...
内容简介 《LINUX设备驱动程序(第3版)》已针对Linux内核的2610版本彻底更新过了。...后备高速缓存 get—free—page和相关函数 vmalloc及其辅助函数 per-CPU变量 获取大的缓冲区 快速参考 ch09... ch10... ... ch18...
采用二级文件目录结构,编写程序实现文件系统的文件存储空间的管理、文件的物理结构、目录结构管理和文件操作。 三、实验要求 1、设计一个有m个用户的文件系统,每个用户最多可保存一个文件。 2、规定用户在一次...
本书的第二部分适合已基本掌握8086/8088汇编语言的程序员,可作为学习保护方式编程技术的教材或参考书,也可作为其他人员了解高档微处理器和保护方式编程技术的参考书,还可作为程序员透彻地了解Windows程序设计技术...
四 PetShop之ASP.NET缓存 如果对微型计算机硬件系统有足够的了解,那么我们对于Cache这个...软件设计借鉴了硬件设计中引入缓存的机制以改善整个系统的性能,尤其是对于一个数据库驱动的Web应用程序而言,缓存的利用
我们已经知道Redis是一种高速缓存数据库了,接下来我们了解一下其更加具体的信息。Redis是一款由意大利人Salvatore Sanfilippo开发的一款基于内存存储的高速缓存数据库,全称为:Remote Dictionary Server,直译为:...
在第一部分中,您将编写一个模拟高速缓存行为的小型C程序(大约200-300行)。在第二部分中,您将优化一个小的矩阵转置函数,目标是最小化缓存未命中的数量。 1、 第一部分:编写缓存模拟器 cachelab-handout/traces...
在讲述高速缓存时,本书讨论了矩阵代码中的循环变量的顺序是如何影响程序的性能的。在讨论网络互联时,本书描述了并发服务器如何有效地处理来自多个客户端的请求。 本书基于Intel兼容(IA32)机器,在Unix或者相关的...
DNS是任何与Internet相连主机必不可少的一部分,同时它也广泛用于专用的互联网。...通过许多例子了解了名字解析器的配置文件以及D N S的优化措施:指向域名的指针(减少报文的长度)、查询结果的高速缓存。
在讲述高速缓存时,本书讨论了矩阵代码中的循环变量的顺序是如何影响程序的性能的。在讨论网络互联时,本书描述了并发服务器如何有效地处理来自多个客户端的请求。 本书基于Intel兼容(IA32)机器,在Unix或者相关的...
在讲述高速缓存时,本书讨论了矩阵代码中的循环变量的顺序是如何影响程序的性能的。在讨论网络互联时,本书描述了并发服务器如何有效地处理来自多个客户端的请求。 本书基于Intel兼容(IA32)机器,在Unix或者相关的...
在讲述高速缓存时,本书讨论了矩阵代码中的循环变量的顺序是如何影响程序的性能的。在讨论网络互联时,本书描述了并发服务器如何有效地处理来自多个客户端的请求。 本书基于Intel兼容(IA32)机器,在Unix或者相关的...
从程序员的视角,看计算机系统!...在讲述高速缓存时,本书讨论了矩阵代码中的循环变量的顺序是如何影响程序的性能的。在讨论网络互连时,本书描述了并发服务器如何能有效地处理来自多个客户端的请求。
在讲述高速缓存时,本书讨论了矩阵代码中的循环变量的顺序是如何影响程序的性能的。在讨论网络互连时,本书描述了并发服务器如何能有效地处理来自多个客户端的请求。 本书基于Intel兼容(IA32)机器,在Unix或者...
在讲述高速缓存时,本书讨论了矩阵代码中的循环变量的顺序是如何影响程序的性能的。在讨论网络互连时,本书描述了并发服务器如何能有效地处理来自多个客户端的请求。 本书基于Intel兼容(IA32)机器,在Unix或者...
有些人将其称为状态管理,另一些人将其称为高速缓存管理。 我喜欢“缓存”一词。 但是从概念上讲,这两者之间没有区别。 现在让我们讨论ASP.NET中缓存管理(或状态管理)的不同方面。 尽管缓存管理不是Windows...
在讲述高速缓存时,本书讨论了矩阵代码中的循环变量的顺序是如何影响程序的性能的。在讨论网络互联时,本书描述了并发服务器如何有效地处理来自多个客户端的请求。 本书基于Intel兼容(IA32)机器,在Unix或者相关的...
第 4 章 配置数据高速缓存 第 5 章 管理多处理器服务器 第 6 章 创建和管理用户数据库 第 7 章 装入和卸下数据库 第 8 章 分布式事务管理 第 9 章 创建和使用段 第 10 章 使用 reorg 命令 第 11 章 检查数据库一致性...