代码的局部性

??

现代操作系统中。基本上都带有设计的快速缓存,快速缓存比读写磁盘和主存快的多。在快速缓存中操作数据性能相对于磁盘和主存快非常多。系统会把程序近期用到的数据存储在快速缓存中以便程序下一次使用时直接从快速缓存中读取,这就是代码的时间局部性。

系统也会把近期用到的数据的临近地址存储在快速缓存中以便下一次使用。这是空间局部性。

int main()

{

int b_data, b_buf[100] = {0}, b_loop;

for(b_loop = 0; b_loop < 100; b_loop++)

{

b_data = b_buf[b_loop];

}

return 0;

}

如实例代码,变量b_data由于循环訪问读写,全部它会存储在快速缓存中,提高訪问速度,这就是时间局部性。程序对数组b_buf訪问以步长1引用的,系统会把它放在快速缓存中,这就是代码的空间局部性。假设步长过长。系统不会把变量存储在快速缓存中

时间: 2024-10-26 09:17:26

代码的局部性的相关文章

信息安全系统设计基础第六周学习总结

第六章 存储器层次结构 1.存储技术 三种常见存储技术:RAM/ROM/磁盘 (1)随机访问存储器RAM 两类:静态RAM(SRAM)和动态RAM(DRAM) 静态RAM(SRAM)比动态RAM(DRAM)更快,但也贵很多. 静态RAM SRAM将每个位存储在一个双稳态的存储器单元里,每个单元是用一个六晶体管电路来实现的. 这个电路的一个属性:它可以无限制地保持在两个不同的电压配置或状态之一.其他任何状态都是不稳定的. - 特点:由于SRAM的双稳态特性,只要有电,它就会永远地保持它的值,即使有

等号赋值与memcpy的效率问题

转自:http://www.aiuxian.com/article/p-1309055.html 偶尔看到一个说法,说,小内存的拷贝,使用等号直接赋值比memcpy快得多.结合自己搜集到的资料,整理成此文. 事实:strcpy等函数的逐字节拷贝,memcpy是按照机器字长逐字进行拷贝的,一个字等于4(32位机)或8(64位机)个字节.CPU存取一个字节和存取一个字一样,都是在一条指令.一个内存周期内完成的.显然,按字拷贝效率更高. 先给出一个程序: 01 #include <stdio.h>

深入理解Windows X64调试

随着64位操作系统的普及,都开始大力进军x64,X64下的调试机制也发生了改变,与x86相比,添加了许多自己的新特性,之前学习了Windows x64的调试机制,这里本着“拿来主义”的原则与大家分享. 本文属于译文,英文原文链接:http://www.codemachine.com/article_x64deepdive.html 翻译原文地址:深入Windows X64 调试 在正式开始这篇译文之前,译者先定义下面两个关于栈帧的翻译: frame pointer:栈帧寄存器.栈帧指针,在X86

程序局部性原理感悟

局部性原理 程序的局部性原理是指程序在执行时呈现出局部性规律,即在一段时间内,整个程序的执行仅限于程序中的某一部分.相应地,执行所访问的存储空间也局限于某个内存区域. 局部性原理又表现为:时间局部性和空间局部性. 时间局部性是指如果程序中的某条指令一旦执行,则不久之后该指令可能再次被执行:如果某数据被访问,则不久之后该数据可能再次被访问. 空间局部性是指一旦程序访问了某个存储单元,则不久之后.其附近的存储单元也将被访问. 这一规律是是普遍事实的总结,更是许多计算机技术的前提假设,比如.NET中托

2017-2018-1 20155231 《信息安全系统设计基础》第9周学习总结

2017-2018-1 20155231 <信息安全系统设计基础>第9周学习总结 教材学习内容总结 第六章 存储器层次结构 第一节 存储技术 所谓"随机存取",指的是当存储器中的数据被读取或写入时,所需要的时间与这段信息所在的位置或所写入的位置无关.相对的,读取或写入顺序访问(Sequential Access)存储设备中的信息时,其所需要的时间与位置就会有关系.它主要用来存放操作系统.各种应用程序.数据等 当电源关闭时RAM不能保留数据.如果需要保存数据,就必须把它们写入

vim记住文件编辑历史

持久化 undo/redo " 在你的 vimrc 加入 set undofile " Maintain undo history between sessions " 设置你的undo保存位置,你需要先 mkdir ~/.vim/undodir set undodir=~/.vim/undodir 可视化 undo 历史.需要借助插件 undotree 使用你的插件管理器 vim-plug , dein, vundle 等安装它即可 https://github.com/m

错误和问题解决的成本

问题描写叙述 错误 数据收集 根本原因 版本号   组件:数据修复           在一个实际成本组织中,(平均,先进先出,后进先出) 一个或更 多的下面情况可能发生: 1.导航到物料成本历史表单上的数量信息,与现有量表单的数量不匹配的记录 2. 一些物料前期已计成本的数量与前面的事务处理历史表单的数量不匹配 3. 全部的库存值报表与事务处理值报表不匹配 4. 存货层次成本更新表单的总数量与现有量数量表单不匹配(只在先进先出/后进先出) 5.这些症状的不论什么一个意味着 MMT-CQL不匹配

JVM-程序编译与代码晚期(运行期)优化

晚期(运行期)优化 1.为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(Just In Time,JIT编译器). 2.Hotspot虚拟机内的即时编译器 (1)解释器与编译器 主流的商用虚拟机,如Hotspot,J9等,都同时包含解释器和编译器. 解释器与编译器两者各有优势:当程序需要快速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间,立即执行.在程序运行后,随着时间得推移,编译器组件发

自己学驱动8——uboot代码阅读三(start.S)

/* Set up the stack                            */ stack_setup: ldr    r0, _TEXT_BASE        /* upper 128 KiB: relocated uboot   */ sub    r0, r0, #CFG_MALLOC_LEN    /* malloc area                      */ sub    r0, r0, #CFG_GBL_DATA_SIZE /* bdinfo