当前位置: 首页 > news >正文

漂亮产品网站本地网站搭建

漂亮产品网站,本地网站搭建,网络营销策划书ppt,上海有哪些做网站的一、缓存 学习过计算机知识的一般都知道缓存这个概念#xff0c;大约也知道缓存是什么。但是如果是程序员#xff0c;如何更好的利用缓存#xff0c;可能就有很多人不太清楚了。其实缓存的目的非常简单#xff0c;就是了更高效的操作数据。大家都听说过“局部性原理”大约也知道缓存是什么。但是如果是程序员如何更好的利用缓存可能就有很多人不太清楚了。其实缓存的目的非常简单就是了更高效的操作数据。大家都听说过“局部性原理”可以这样说如果计算机中不存在局部性原理这个概念就不大会有缓存这个概念。 局部性原理可以划分为时间局部性和空间局部性这个非常好理解。前者指在较短的时间内不断的访问相同的数据后者则为访问的数据空间范围较小比如数组可能更容易访问附近的数据。 这里不给大家分析硬件或者其它什么几级缓存的相关技术那些分析无论是书籍还是资料或者网上都非常多这里只分析缓存的应用级别的情况。 伪共享 局部性原理 二、缓存命中 一般来说缓存的主要作用就是增加了一个快速访问的中间层减少了去较慢的内存中操作数据的过程。所以其命中率可以考虑下面两个方面 1、缓存大小 缓存的大小直接决定的命中率的高低理论上讲缓存越大越好。但这玩意儿贵啊。而且一般缓存都在CPU内部成本相当高昂。所以要大小适中后来为了增加命中率又非常聪明的想出了多级缓存的方式从而平衡命中率和命中代价。至于缓存分级有兴趣可以查看一下相关书籍。 2、缓存替换策略 缓存也可以看做内存所以它也有管理的策略。想一下内存中如何替换内存页缓存基本也差不多。这里就存在一个问题如果当几次没有命中的数据如何被替换假如刚刚替换出去的又要访问不就降低了访问的效率么。所以这个替换的策略也非常重要常见的如LRUFIFOLFU等等大家可查看相关的资料这里不是重点就不展开了。 一般来说只要指定是硬件缓存基本大小就无法更改了。相关的替换策略一般也很少改动但可以根据需要选取合适的CPU更好。 三、C如何更高效的利用缓存 既然控制不了缓存的大小但可以根据相关的策略和缓存的原理进行编码的控制。缓存的原理就是局部性的问题也即空间和时间上的局部性。那么在时间局部性上就可以把经常访问的数据放到缓存或寄存器而空间局部性上就可以把经常访问的相关数据放在一起引入缓存中去。那大方向就指明了C编码可以做如下的控制 1、内存处理 要想将内存的数据有效的转化为缓存提高命中效率可以从优化布局比如常见的结构体的字段的顺序啊指针数据的处理啊等等。内存对齐 这个更常见。把相关的数据搞到和Cache行大小相关最小单元的处理另外就是多使用类似数组的连续内存数据结构少使用类似List这种非连续的内存。 2、函数处理 要想增加函数处理的效率首先想到的就是使用内联函数同时减少函数中的对象的传递特别是大对象的传递。要避免过深的嵌套调用和递归调用防止缓存中途失效还需要重新从内存加载就得不偿失了。 3、循环处理 前面分析过循环处理的很多优化往往编译器都能做到。但还是需要注意要对相关的循环过程中的循环次数的优化特别是在处理一些大型的数据时比如特别大的数组、矩阵等可以考虑前面并行编程优化时提到的分块处理分治同样也适应缓存的优化。 4、IO的控制 在一些库或接口中提供了硬盘等IO的缓冲设置其实这也可以划到缓存当中来。如果使用良好的预读写函数处理可能大幅度提高缓存的命中率真从而提高读写的效率。 5、使用内存或对象池 这个很容易明白其实和使用数组方式类似将相关的对象直接固定在一个位置而不是反复的分配无法形成有效的缓存。 6、减少判断和跳转的语句 这个不光对缓存有用对CPU中的流水指令也很重要经常的反复的无规则的跳转缓存就失去了意义 。 7、减少内存碎片 内存碎片增多就意味着连续性的降低从而导致缓存在固定的大小范围内引入的相关范围的减少从概率上讲会降低命中率。消除内存碎片最常用的是使用内存池技术。 8、消除伪共享 这个非常重要在如今多核泛滥的情况下不处理这种情况就等于是降低命中率。可以参看前面的文章“多线程的伪共享”中消除的方法即使用填充法或使用一些关键字来处理。 9、处理好并行情况的竞态 这个其实和判断语句有些相似都是尽量保证高命率的可能的内存数据保留在缓存中毕竟缓存的大小有限。 四、例程 下面看一些简单的应用 //使用关键字处理对齐 struct alignas(8) Test {int a;int32_t b; }; //数组行优先访问 for (int r 0; r 1000; r) {for (int c 0; c 1000; c) {array[r][c] 0;}} } //循环优化 for (int i 0; i 800; i 8) {readData(array[i]);readData(array[i1]);readData(array[i2]);readData(array[i3]);readData(array[i4]);readData(array[i5]);readData(array[i6]);readData(array[i7]); } //经常访问数据放置相近 struct Data{ ... int height,weight,old;... }; 其实这些方法很简单就是使用的时候要在思想上有一个处理的想法而不是粗暴的想到哪儿就写到哪儿。 五、总结 总之如何在编程层面对缓存命中进行处理是一个综合考量的过程。开发者需要根据实际情况如何用最小的代价实现更好的命中率。不过可惜的是对于大多数程序员来说这都是在实际场景中很难遇到的情况。对于普通程序员来说好好优化但不要过度优化代码更不要过早的展开优化。养成一个好的数据定义的内存布局概念就基本可以达到要求了。 不过需要注意的是不同的架构芯片可能缓存机制有所不同如果真要写贴近硬件的缓存机制相关代码需要严格的按照相关的硬件说明进行。
http://www.hkea.cn/news/14344905/

相关文章:

  • 为网站做一则广告语做网站需要什么营业执照
  • 做网站怎样用链接赚钱iis6添加网站
  • 北京网站制做的公司广西壮族自治区博物馆
  • 深圳建设资格注册中心网站wordpress自动博客
  • 昆明市住房和城乡建设局网站网站开发后台一般用什么
  • 旅行社网站规划与建设的流程图专业培训大全
  • 永川网站制作wordpress 多站点开启
  • 建网站建设网站建筑设计机构
  • 广西建设网站官网网站建设发展史
  • 公司网站介绍范文软件工程师招聘简章pdf
  • 网站设计师与网站开发工程师全屏背景网站如何做到自适应
  • 外贸网站建设公司价位wordpress虚线框可序列
  • 西宁房地产网站建设重庆市工程建设信息网2021
  • 建设商务网站需要哪些步骤网站台做计么呢
  • 网站备案 需要上传网站么中国建设银行招聘官方网站
  • 邯郸公司做网站东营企业自助建站
  • 安装百度优化大师使用心得
  • 一般网站的后台海外制作网站
  • 合肥市网站建设 小程序wordpress动漫主题曲
  • dede网站地图地睛方法数码做的网站怎么样
  • 网站建设套餐电商网站建设的目的
  • 怎么把自己做的网站传网上云南做网站的公司有哪些
  • 网站app建设图片外贸建站wordpress主题
  • 信息化和网站建设管理工作情况网站建设珠海
  • 外贸网站演示搜狗浏览器网页版入口
  • 网站备案vpn注销那些网站可以做问答
  • 手机网站建设视频教程烟台seo关键词排名
  • 网站标识描述可以填关键词吗哪个网站做外贸零售比较好呢
  • 网页设计作业网站赤峰是住房和城乡建设局网站
  • 做爰全过程免费的视频凤凰网站网页设计培训怎么做好