随笔分类 -  程序性能优化

摘要:开篇上一篇博文对缓存的思考——提高命中率详细介绍了高速缓存的组织结构,并通过实例说详细明了cpu从高速缓存中取数据的过程,对于缓存的工作机制应该有了清晰的认识。这篇博文就来简单讨论以下对于缓存在实际开发中的应用,这里将告诉你如何让你的程序充分利用该缓存,即如何编写高速缓存友好的代码。提示:如果高速缓存的运行机制还没有清晰的认识,请参照前面文章。注1:关于文中提到的局部性的相关知识参照:局部性原理浅析——良好代码的基本素质注2:这是一个系列的文章,收录在程序性能优化注3:文章知识有些地方不容易理解,所以用心才能看完噢。“用空间换时间”在搞算法的时候经常能听到这种说法,算法研究中通常要考虑算法的时 阅读全文
posted @ 2012-02-15 15:20 Geek_Ling 阅读(15781) 评论(9) 推荐(8) 编辑
摘要:开篇编写高效的程序并不只在于算法的精巧,还应该考虑到计算机内部的组织结构,cpu微指令的执行,缓存的组织和工作原理等。好的算法在实际中不见得有高效率,如果完全没有考虑缓存、微指令实现的话。前两篇博文局部性原理浅析介绍了程序的局部性原理,如何写出局部性良好代码。提高程序性能、何为缓存讨论了存储器层次结构,计算机内部的存储结构、缓存的概念,简单的介绍了缓存的工作机制。建议先阅读前两篇博文,虽然他们之间联系不大,在前面也有一些对本文的铺垫。而且,这是一个系列的文章。旨在优化程序性能。这篇博文主要介绍的是缓存的组织、工作原理。拨开迷雾,让你更加清晰的认识缓存。通用缓存结构回顾在提高程序性能、何为缓存中 阅读全文
posted @ 2012-02-14 08:28 Geek_Ling 阅读(30863) 评论(17) 推荐(26) 编辑
摘要:开篇上一篇博文局部性原理浅析——良好代码的基本素质中对程序局部性有了一个简单的介绍。基本上已经知道了如何编写有良好局部性的代码。但是为什么有良好局部性的代码就能有良好的运行效率,这个问题将在这篇博文中给出解答。至于存储器内部的组织实现,将在下篇文章中叙述。存储器层次结构我们知道,计算机里的存储器有:硬盘、主存、高速缓存(其中又有一级高速缓存、二级高速缓存等等)、在往上就是寄存器。存储器在计算机内部的组织方式如下图所示:相信上图大家并不陌生。wiki对The memory hierarchy 的介绍的时候也有此图。我们发现,越往上,存储器的容量越小、成本越高、速度越快。为什么会出现这样的结构呢? 阅读全文
posted @ 2012-02-12 12:20 Geek_Ling 阅读(7481) 评论(5) 推荐(5) 编辑
摘要:开篇一个优秀的程序、优美的代码,一般都具有良好的局部性。简洁、高效是每个程序员的追求。了解程序的局部性,能编写出更高效的代码。因为有良好局部性的程序能更好的利用缓存。不过这方面的只是将在以后的文章中介绍。这篇文章就简单的介绍以下程序的局部性原理。什么是局部性局部性通常有两种形式:时间局部性(temporal locality)时间局部性指的是:被引用过一次的存储器位置在未来会被多次引用(通常在循环中)。空间局部性(spatial locality)如果一个存储器的位置被引用,那么将来他附近的位置也会被引用。(这样说过于理论了些,在下面的论述中会有例子说明)数据引用局部性例子是最好说明问题的途径 阅读全文
posted @ 2012-02-11 21:48 Geek_Ling 阅读(20318) 评论(12) 推荐(4) 编辑