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

高端网站建设有哪些做网站大家都找谁

高端网站建设有哪些,做网站大家都找谁,系网站建设总结报告,做盗版电影网站赚钱什么是内存对齐#xff1f;CPU在读取内存地址的时候#xff0c;一定按照一定的偏移量去读取#xff0c;不知道你发现了没有#xff0c;我们没有看到一个变量的大小是 3 个字节的#xff0c;都是 1 个字节#xff0c;2个字节#xff0c;4个字节#xff0c;8个字节#… 什么是内存对齐CPU在读取内存地址的时候一定按照一定的偏移量去读取不知道你发现了没有我们没有看到一个变量的大小是 3 个字节的都是 1 个字节2个字节4个字节8个字节16个字节32个字节。为什么会这样呢因为CPU设计的时候没有一个 3 、5、7、9这样的模子因为设计这样的模子非常费劲。为什么要内存对齐之前网上有一个一个例子如果一个变量int 的起始地址偏移是3那么CPU要取这个地址上的数据需要取两次为什么呢假设一个变量 在内存的位置 从地址 1开始存放数据因为这个是int类型它占用4个字节的内存空间。我们用一个int 的模子「int模子是4个字节」来卡这个数据实际上是这样操作的第一次卡模子只能从0开始第二次卡模子再从3位置开始从图片上可以明显看出来我们需要CPU卡两次模子才取到在内存里面的 int 变量如果int 是按照内存对齐的方式存放的呢很明显我们只需要卡一次模子就可以取到数据了。内存对齐引发的问题前两天我们群上有一个同学发了一份这样的代码出来代码写得还是有一点风骚的这位同学说这个代码在A单片机上运行得非常OK也已经出货了几万台了但是这个代码移植到单片机B上后就挂了大家帮忙看看这个代码有什么问题uint8_t buf[16]; uint8_t i; uint16_t data; for (i0; i16; i2) { data *((uint16_t *)buf[i]); }问题的原因经过一段激烈的讨论后面发现是内存对齐的问题一个群友画了一个图写的很清楚了因为char 是对单字节对齐的所以没有问题但是uint16_t 默认是对双字对齐的所以如果初始地址是奇数的话最后就出现内存越界了。一个图片说明不同数据类型的内存对齐使用#pragma pack()限定内存对齐我们可以使用宏 #pragma pack() 来指定内存对齐的方式这里我就不展开说明了如果说明太多了后面用一个文章来单独说明喜欢了解的同学可以百度看看内容还是比较多的。内存对齐可以提升CPU效率我们知道单字节对齐的效率应该是最低的我给两个代码给大家看看比较一下单字节和双字节内存对齐对CPU效率的影响。单字节对齐函数void Munge8( void ∗data, uint32_t size ) { uint8_t ∗data8 (uint8_t∗) data; uint8_t ∗data8End data8 size; while( data8 ! data8End ) { ∗data8 ‑∗data8; } }双字节对齐函数void Munge16( void ∗data, uint32_t size ) { uint16_t ∗data16 (uint16_t∗) data; uint16_t ∗data16End data16 (size 1); /∗ Divide size by 2. ∗/ uint8_t ∗data8 (uint8_t∗) data16End; uint8_t ∗data8End data8 (size 0x00000001); /∗ Strip upper 31 bits. ∗/ while( data16 ! data16End ) { ∗data16 ‑∗data16; } while( data8 ! data8End ) { ∗data8 ‑∗data8; } }这个代码大家可以直接拿去执行试试最终的结果如下面的图片果修改成 4 字节对齐的话结果将会更加有意思四字对齐函数void Munge32( void ∗data, uint32_t size ) { uint32_t ∗data32 (uint32_t∗) data; uint32_t ∗data32End data32 (size 2); /∗ Divide size by 4. ∗/ uint8_t ∗data8 (uint8_t∗) data32End; uint8_t ∗data8End data8 (size 0x00000003); /∗ Strip upper 30 bits. ∗/ while( data32 ! data32End ) { ∗data32 ‑∗data32; } while( data8 ! data8End ) { ∗data8 ‑∗data8; } }他们的效率主要体现在字节不对齐的时候如果字节默认已经是对齐的时候那效果更是快得飞起。参考https://developer.ibm.com/articles/pa-dalign/留个问题上面有问题的代码如何修改回答正确的前三名我发心意红包扫码或长按关注回复「 加群 」进入技术群聊
http://www.pierceye.com/news/457702/

相关文章:

  • 外贸网站一站式服务招网站建设销售
  • 绚丽的网站wordpress进入后台显示500
  • 威海城乡与住房建设部网站小颜自助建站系统
  • 域名怎么解析到网站做响应式网站需要学哪些知识
  • wordpress手机端慢seoer是什么意思
  • wordpress添加站点江苏廉政建设网站
  • 网站seo是什么做二维码推送网站
  • win7 iis默认网站设置游戏推广员
  • 湖北二师网站建设排名潍坊专业捞泵电话
  • 个人网站设计内容和要求萍乡网站制作公司
  • 合肥网站seo费用怎么把文章导入wordpress
  • 赣州网站推广哪家最专业阿里云wordpress数据库备份
  • 珠海专业网站建设公司做网站虚拟主机好还是
  • 做美图 网站有哪些wordpress哪些插件
  • 倒计时网站模板全屋定制设计培训学校哪里有
  • 凡客做网站网站排名的重要性
  • 怎么问客户做不做网站企业网站源码 多语言
  • wordpress网站基础知识信息网络公司经营范围
  • 智汇隆网站建设wordpress建字段
  • 广东专业商城网站建设软文投稿平台有哪些
  • 广告公司起什么名字好seo教程有什么
  • 搭建网站什么意思网站制作网址
  • 哈尔滨站建筑松原市建设局网站
  • 浙江网站建设 seo深圳建设岗位证书报名网站
  • c 做彩票网站想在网上做开发网站接活儿
  • 医疗网站建设基本流程图怎样进行文化建设
  • 在深圳学网站设计我想创业做网站
  • seo网站优化公司住房和城乡建设厅证书查询
  • 江苏建设通网站创业项目
  • 亚马逊电商网站南通做网络网站