999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

結(jié)構(gòu)體數(shù)據(jù)對齊方法的研究

2017-05-19 12:34:31王若
未來英才 2017年7期
關(guān)鍵詞:計(jì)算機(jī)結(jié)構(gòu)

王若

摘要:內(nèi)存地址對齊,是一種在計(jì)算機(jī)內(nèi)存中排列數(shù)據(jù)、訪問數(shù)據(jù)的一種方式。當(dāng)今的計(jì)算機(jī)在計(jì)算機(jī)內(nèi)存中讀寫數(shù)據(jù)時(shí)都是按字(word)大小塊來進(jìn)行操作的。基本類型數(shù)據(jù)對齊就是數(shù)據(jù)在內(nèi)存中的偏移地址必須等于一個(gè)字(word)的倍數(shù),按這種存儲(chǔ)數(shù)據(jù)的方式,可以提升系統(tǒng)在讀取數(shù)據(jù)時(shí)的性能。有時(shí)候?yàn)榱藢R數(shù)據(jù),可能必須在上一個(gè)數(shù)據(jù)結(jié)束和下一個(gè)數(shù)據(jù)開始的地方插入一些沒有用處字節(jié),這就是結(jié)構(gòu)體數(shù)據(jù)對齊。

關(guān)鍵詞:結(jié)構(gòu);數(shù)據(jù)

一、假設(shè)計(jì)算機(jī)的字大小為4個(gè)字節(jié),因此變量在內(nèi)存中的首地址都是滿足4地址對齊,CPU只能對4的倍數(shù)的地址進(jìn)行讀取,而每次能讀取4個(gè)字節(jié)大小的數(shù)據(jù)

假設(shè)有一個(gè)整型的數(shù)據(jù)a的首地址不是4的倍數(shù),因此想讀取a的數(shù)據(jù),CPU要進(jìn)行兩次內(nèi)存讀取,而且還要對兩次讀取的數(shù)據(jù)進(jìn)行處理才能得到a的數(shù)據(jù),而一個(gè)程序的瓶頸往往不是CPU的速度,而是取決于內(nèi)存的帶寬,因?yàn)镃PU得處理速度要遠(yuǎn)大于從內(nèi)存中讀取數(shù)據(jù)的速度,因此減少對內(nèi)存空間的訪問是提高程序性能的關(guān)鍵[1]。從上例可以看出,采取內(nèi)存地址對齊策略是提高程序性能的關(guān)鍵。

二、結(jié)構(gòu)體默認(rèn)的規(guī)則

本文所述的環(huán)境均是在32位編譯器的編譯環(huán)境中,一般編譯器默認(rèn)對齊方式是4字節(jié)。

總結(jié)結(jié)構(gòu)體的數(shù)據(jù)對齊方式滿足條件:

1、結(jié)構(gòu)體變量的首地址能夠被其最寬基本類型成員的大小所整除。2、結(jié)構(gòu)體每個(gè)成員相對于結(jié)構(gòu)體首地址的偏移量(offset)都是成員自身大小的整數(shù)倍,如有需要編譯器會(huì)在成員之間加上填充字節(jié)。3、結(jié)構(gòu)體的總大小為結(jié)構(gòu)體最寬基本類型成員大小的整數(shù)倍,如有需要編譯器會(huì)在最末一個(gè)成員之后加上填充字節(jié)。

三、手動(dòng)對齊方式

如果編譯器自動(dòng)實(shí)現(xiàn)結(jié)構(gòu)體對齊,我們就稱為自動(dòng)對齊,與之相反,使用#pragma進(jìn)行對齊的就是手動(dòng)對齊。

#pragma備用告訴編譯器,程序員自己希望的對齊方式。比如,雖然編譯器的默認(rèn)對齊方式是4,但是如果我們不希望按照4對齊,而是希望是8,這個(gè)時(shí)候就必須使用#pragma進(jìn)行手動(dòng)對齊了。

常用的設(shè)置手動(dòng)對齊的命令有兩種:第一種是#pragmapack(),這種就是設(shè)置編譯器1字節(jié)對齊,不過也可以認(rèn)為是設(shè)置為不對齊或者取消對齊;第二種是

#pragmapack(4),這個(gè)括號(hào)中的數(shù)字表示希望以多少字節(jié)進(jìn)行對齊。

我們需要#prgamapack(n)開頭,以#pragmapack()結(jié)尾,定義一個(gè)區(qū)間,這個(gè)區(qū)間內(nèi)的對齊參數(shù)就是n。

舉例說明

(一)自動(dòng)對齊方式或者是默認(rèn)4字節(jié)對齊

分析代碼:根據(jù)基本數(shù)據(jù)類型對齊規(guī)則可知,c(字節(jié)),i(4字節(jié)),d(8字節(jié)),b(2字節(jié))。是不是結(jié)果就是1+4+8+2呢?很明顯不是,c是首元素,不需要對齊,但是后面的就需要對齊了,i是4字節(jié),但是它的起始偏移量只有1字節(jié),不能整除4,因此就在c后面再加3個(gè)字節(jié),當(dāng)遇到d時(shí),由于之前的偏移量就是8,所以不需要偏移,在b之前有16字節(jié),這時(shí)也不需要偏移就是直接加上2。所以最后結(jié)果就是1+3+4+8+2=20,對不對呢?其實(shí)是不對的,因?yàn)?8不是默認(rèn)對齊4的整數(shù)倍,還需要在后面補(bǔ)充2字節(jié)。一共就是20字節(jié)。

分析:該結(jié)果就是24字節(jié),分析同上,但是在最后一步不一樣,對齊是8字節(jié),所以在b后面還需要添加6字節(jié)。最終結(jié)果就是24.

四、結(jié)語

需要字節(jié)對齊的根本原因在于CPU訪問數(shù)據(jù)的效率問題。因?yàn)橛?jì)算機(jī)可以處理數(shù)據(jù)位數(shù)都是確定的,這時(shí)候就說明它一次性只能處理確定位數(shù)的數(shù)據(jù),但是當(dāng)認(rèn)為造成該數(shù)據(jù)不在計(jì)算機(jī)一次性可訪問的范圍內(nèi)的時(shí)候,計(jì)算機(jī)就會(huì)按照一定的優(yōu)化方法來處理,這樣是更加方便和快捷的處理數(shù)據(jù)。也就是強(qiáng)制的要求一來簡化了處理器與內(nèi)存之間傳輸系統(tǒng)的設(shè)計(jì),二來可以提升讀取數(shù)據(jù)的速度。

參考文獻(xiàn)

[1] 陳榮,蔡志勇,胡保安. 基于嵌入式操作系統(tǒng)VxWorks數(shù)據(jù)采集系統(tǒng)軟件設(shè)計(jì)[J]. 科技廣場,2005,(06):82-84.

猜你喜歡
計(jì)算機(jī)結(jié)構(gòu)
《形而上學(xué)》△卷的結(jié)構(gòu)和位置
計(jì)算機(jī)操作系統(tǒng)
穿裙子的“計(jì)算機(jī)”
基于計(jì)算機(jī)自然語言處理的機(jī)器翻譯技術(shù)應(yīng)用與簡介
科技傳播(2019年22期)2020-01-14 03:06:34
計(jì)算機(jī)多媒體技術(shù)應(yīng)用初探
科技傳播(2019年22期)2020-01-14 03:06:30
論結(jié)構(gòu)
中華詩詞(2019年7期)2019-11-25 01:43:04
新型平衡塊結(jié)構(gòu)的應(yīng)用
模具制造(2019年3期)2019-06-06 02:10:54
信息系統(tǒng)審計(jì)中計(jì)算機(jī)審計(jì)的應(yīng)用
論《日出》的結(jié)構(gòu)
創(chuàng)新治理結(jié)構(gòu)促進(jìn)中小企業(yè)持續(xù)成長
主站蜘蛛池模板: 福利姬国产精品一区在线| 91黄视频在线观看| 99热国产这里只有精品无卡顿"| 国产综合无码一区二区色蜜蜜| 久久久久久久蜜桃| 日韩在线视频网站| 国产99视频精品免费视频7| 成人另类稀缺在线观看| 亚洲视频免| 午夜视频免费试看| 成人年鲁鲁在线观看视频| 久久中文字幕2021精品| 精品三级网站| 日本人妻一区二区三区不卡影院| 成人久久18免费网站| 久久精品午夜视频| 国产超碰在线观看| 99人体免费视频| 久久综合激情网| 五月天天天色| 欧美午夜小视频| 欧美a网站| 亚洲成a人片在线观看88| 亚洲日本一本dvd高清| 国产精品99久久久久久董美香| 亚洲欧洲AV一区二区三区| 秘书高跟黑色丝袜国产91在线| 色成人综合| 一级看片免费视频| 青青草原国产免费av观看| 国产第八页| 凹凸精品免费精品视频| 尤物特级无码毛片免费| 欧美日韩福利| 亚洲欧美综合精品久久成人网| 在线观看精品国产入口| 找国产毛片看| 亚洲黄网在线| 中美日韩在线网免费毛片视频 | 国产免费羞羞视频| 亚洲午夜18| 国产噜噜噜| 毛片手机在线看| 日本在线免费网站| 中文字幕有乳无码| 国产在线专区| 五月婷婷综合网| 国产18在线播放| 日本国产一区在线观看| 久久久久人妻一区精品| 国产97视频在线观看| 国产精品免费露脸视频| 色偷偷一区| 亚洲视频免费在线看| 久久窝窝国产精品午夜看片| 久久久久免费精品国产| 亚洲中文字幕国产av| 精品一区二区三区视频免费观看| 精品久久久久成人码免费动漫| 国产午夜一级毛片| 波多野结衣爽到高潮漏水大喷| 天天操精品| 玖玖免费视频在线观看| 国产午夜人做人免费视频中文 | 亚洲va在线∨a天堂va欧美va| 国产精品自在在线午夜区app| 日本欧美精品| 高潮毛片免费观看| 国产精品免费电影| 国产熟睡乱子伦视频网站| 欧美一区二区福利视频| 国产精品亚洲一区二区三区在线观看| 91色在线视频| 99热这里只有精品在线播放| 国产99在线| 2022国产91精品久久久久久| 九色视频线上播放| 国产靠逼视频| 亚洲天堂网在线观看视频| 中国国产高清免费AV片| 日韩在线1| 国产日韩欧美精品区性色|