丝袜人妻一区二区三区_少妇福利无码视频_亚洲理论片在线观看_一级毛片国产A级片

當(dāng)前位置:首頁(yè) > 旅游指南

memset 關(guān)于程序效率的問(wèn)題,你有思考過(guò)嗎?

淘寶店:[吳健英的店]

for(;;)

{

void * buffer = malloc(SIZE);

memset(緩沖區(qū),大小);

進(jìn)程(緩沖區(qū))

自由緩沖區(qū);

}

這是一個(gè)實(shí)習(xí)生的偽代碼(我?guī)Я?0+個(gè)實(shí)習(xí)生,見(jiàn)多識(shí)廣)。本來(lái)這個(gè)SIZE很小,估計(jì)是用來(lái)存儲(chǔ)URL的,定義為512字節(jié)。后來(lái)因?yàn)槟撤N原因擴(kuò)展到1M,從512字節(jié)擴(kuò)展到1M,速度慢了很多。為什么?這位同學(xué)沒(méi)法解釋?zhuān)易屗^續(xù)探索,找出真正的原因。

我讓他從這些方面入手。

(1)首先對(duì)一些耗時(shí)的代碼進(jìn)行分析,發(fā)現(xiàn)memset從512到1M花費(fèi)的時(shí)間更多,且增加不是線性的。我讓他先看看glibc的memset源代碼,如下:

#如果定義了_LIBC ||定義了STDC_HEADERS ||定義了USG

#包括

#定義洪水記憶集

#否則

靜態(tài)空洪(__ptr_t,int,_ _ malloc _ size _ t);

靜態(tài)空隙

洪水(ptr、val、大小)

_ _ ptr _ t ptr

int val

_ _ malloc _ size _ t size

{

char * cp = ptr

while(大小-)

* cp++ = val;

}

#endif

可見(jiàn)memset是每個(gè)字節(jié)都賦值的,不是機(jī)器喜歡的方式。機(jī)器希望在4字節(jié)對(duì)齊的位置運(yùn)行(32位機(jī)器,64位機(jī)器喜歡8字節(jié)對(duì)齊),一次讀取32位(4字節(jié))。因此,memset可以實(shí)現(xiàn)一次寫(xiě)入4個(gè)字節(jié)的代碼。

(2) malloc需要進(jìn)一步探索。事實(shí)上,linux內(nèi)存分配有兩種,brk和mmap。前者分配128 K以?xún)?nèi)的內(nèi)存,后者分配128k以上的內(nèi)存,改成1M后,

void * buffer = malloc(SIZE);

這一段很快,因?yàn)橹环峙涮摂M內(nèi)存,不加載內(nèi)存??梢酝ㄟ^(guò)check /proc/pid/statm觀察操作前后內(nèi)存分配和memset的變化。

Memset需要實(shí)際內(nèi)存分配、頁(yè)面故障中斷、TLB加載等等。

brk分配的內(nèi)存是glibc管理的內(nèi)存,分配快,釋放方便(很多情況下不釋放)。所以brk分配用的是512字節(jié)(效率高),但是改成1M后,用的是mmap分配(memset效率低),所以效率低很多。

(3)如果將此代碼更改為,等效性能將大大提高。

void * buffer = malloc(SIZE);

for(;;)

{

memset(緩沖區(qū),大小);

進(jìn)程(緩沖區(qū))

}

自由緩沖區(qū);

(4)最后,需要質(zhì)疑的是為什么要開(kāi)一個(gè)1M大小的空房間,是否通過(guò)了驗(yàn)證,是否有必要這樣做,實(shí)際情況如何,是否需要memset,是否可以通過(guò)其他方法避免。

可見(jiàn),很多問(wèn)題,編碼習(xí)慣不好,對(duì)機(jī)器理解不足,在一般的工作中是很難發(fā)現(xiàn)的,必須體現(xiàn)在大規(guī)模數(shù)據(jù)處理的實(shí)際場(chǎng)合(處理的數(shù)據(jù)量足夠大)。所以大規(guī)模數(shù)據(jù)處理技術(shù)是軟硬件結(jié)合的技術(shù),不僅僅是技術(shù)問(wèn)題,還有業(yè)務(wù)問(wèn)題。應(yīng)該消除浪費(fèi)代碼和計(jì)算,不合理的計(jì)算應(yīng)該變得合理。

本文來(lái)源于網(wǎng)絡(luò)。如果原作者不支持我們轉(zhuǎn)發(fā),請(qǐng)聯(lián)系我們刪除。謝謝!

技術(shù)來(lái)自積累,成功來(lái)自堅(jiān)持

1.《memset 關(guān)于程序效率的問(wèn)題,你有思考過(guò)嗎?》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。

2.《memset 關(guān)于程序效率的問(wèn)題,你有思考過(guò)嗎?》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。

3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/junshi/889445.html

上一篇

徐有容 《擇天記》徐有容大鬧秋山君和南客婚禮 《擇天記》南客結(jié)局及分集劇情

下一篇

端午節(jié)祝福的圖片 2017端午節(jié)短信祝福語(yǔ)大全 端午節(jié)送給家人朋友的溫馨祝福語(yǔ)

全球累計(jì)確診新冠肺炎超1.141億例 COVAX將分配2.37億劑疫苗 事情經(jīng)過(guò)真相揭秘!

全球累計(jì)確診新冠肺炎超1.141億例 COVAX將分配2.37億劑疫苗 事情經(jīng)過(guò)真相揭秘!

世界衛(wèi)生組織網(wǎng)站最新數(shù)據(jù)顯示,截至歐洲中部時(shí)間2日18時(shí)09分(北京時(shí)間3日1時(shí)09分),全球確診病例較前一日增加280653例,達(dá)到114140104例。...

合肥傳銷(xiāo)內(nèi)幕 合肥一傳銷(xiāo)“老總”自曝行業(yè)內(nèi)幕 詳解69800元分配方案

兩年前,四川人王某在家過(guò)日子。然而,“哥哥”的一個(gè)電話把他拖入了深淵——被騙進(jìn)了合肥市北城世紀(jì)城的一個(gè)MLM組織。在組織中,王煞費(fèi)苦心地被提拔為“老大”,甚至賣(mài)掉了家里唯一的一套房子。但當(dāng)他成為“老板”后,王看清了的真面目,他以前的承諾都是謊言。5月12日中午,王來(lái)到包河區(qū)大川辦事處,向工作人員揭露工業(yè)的“內(nèi)...

全球累計(jì)確診新冠肺炎超1.141億例 COVAX將分配2.37億劑疫苗 真相原來(lái)是這樣!

世界衛(wèi)生組織網(wǎng)站最新數(shù)據(jù)顯示,截至歐洲中部時(shí)間2日18時(shí)09分(北京時(shí)間3日1時(shí)09分),全球確診病例較前一日增加280653例,達(dá)到114140104例。...

全球累計(jì)確診新冠肺炎超1.141億例 COVAX將分配2.37億劑疫苗 還原事發(fā)經(jīng)過(guò)及背后原因!

世界衛(wèi)生組織網(wǎng)站最新數(shù)據(jù)顯示,截至歐洲中部時(shí)間2日18時(shí)09分(北京時(shí)間3日1時(shí)09分),全球確診病例較前一日增加280653例,達(dá)到114140104例。...

全球累計(jì)確診新冠肺炎超1.141億例 COVAX將分配2.37億劑疫苗 對(duì)此大家怎么看?

全球累計(jì)確診新冠肺炎超1.141億例 COVAX將分配2.37億劑疫苗 對(duì)此大家怎么看?

世界衛(wèi)生組織網(wǎng)站最新數(shù)據(jù)顯示,截至歐洲中部時(shí)間2日18時(shí)09分(北京時(shí)間3日1時(shí)09分),全球確診病例較前一日增加280653例,達(dá)到114140104例。...

威剛內(nèi)存 威剛內(nèi)存辨別真假的方法

【哈哈IT網(wǎng)絡(luò)內(nèi)存】威剛內(nèi)存以其做工精良,性能卓越,一直是廣大用戶(hù)喜愛(ài)的內(nèi)存品牌。但最近一些不法商販看中了偉剛內(nèi)存的市場(chǎng)領(lǐng)先地位,打著偉剛產(chǎn)品的旗號(hào)銷(xiāo)售普通內(nèi)存,通過(guò)欺騙消費(fèi)者獲取暴利,給偉剛產(chǎn)品形象和用戶(hù)帶來(lái)了巨大損失。 為了讓消費(fèi)者能夠辨別真?zhèn)?,?gòu)買(mǎi)正版威剛記憶產(chǎn)品,我們想介紹一些非常實(shí)...

做試管需要多少 做試管嬰兒一般要花多少時(shí)間?都怎么分配的?

  • 做試管需要多少 做試管嬰兒一般要花多少時(shí)間?都怎么分配的?
  • 做試管需要多少 做試管嬰兒一般要花多少時(shí)間?都怎么分配的?
  • 做試管需要多少 做試管嬰兒一般要花多少時(shí)間?都怎么分配的?
字節(jié)跳動(dòng)副總裁吐槽騰訊 他是怎么吐槽得

字節(jié)跳動(dòng)副總裁吐槽騰訊 他是怎么吐槽得

7月1日晚,副總裁字節(jié)跳動(dòng)在個(gè)人頭條談到騰訊和老干媽廣告烏龍事件?!叭绻臼聦?shí)沒(méi)有調(diào)查清楚,可以直接使用治安檢查方法,甚至對(duì)方被成功凍結(jié)1600萬(wàn)元!說(shuō)明這家公司已經(jīng)形成了一部打擊一切不利于它的日常思維的公安法,簡(jiǎn)化到連偷懶調(diào)查都沒(méi)有?!彬v訊字節(jié)跳動(dòng)副總裁土超今天騰訊起訴老干媽拖欠廣告費(fèi),老干媽稱(chēng)騰訊在欺詐...