亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

seo常用優(yōu)化技巧 網(wǎng)站代碼優(yōu)化工具( 六 )


### 湊零為整與化整為零
湊零為整其實(shí)的思想在日志批處理里提了,不再展開 。
化整為零體現(xiàn)了分而治之的思想,可以把一個(gè)大的操作,分?jǐn)傞_來(lái),避免在做大操作的時(shí)候?qū)е驴D,從而讓CPU占比更加平穩(wěn) 。
### 分頻
之前我優(yōu)化過一個(gè)游戲服務(wù)器,游戲服務(wù)器的邏輯線程是一個(gè)大循環(huán),里面調(diào)用tick函數(shù),tick函數(shù)里調(diào)用了所有需要check timer & do的事情,然后所有需要check timer & do的事情都塞進(jìn)tick里 。
改進(jìn):tick里調(diào)用了tick50ms、tick100ms、tick500ms,tick1000ms,tick5000ms,然后把需要check timer & do的邏輯根據(jù)精度要求塞到不同的tickXXms里去 。
### 減法
減少冗余
減少拷貝、零拷貝
減少參數(shù)個(gè)數(shù)(寄存器參數(shù)、取決于ABI約定)
減少函數(shù)調(diào)用次數(shù)/層次
減少存儲(chǔ)引用次數(shù)
減少無(wú)效初始化和重復(fù)賦值
### 循環(huán)優(yōu)化
這方面的知識(shí)很多,感覺一下子講不完,提幾點(diǎn),循環(huán)套循環(huán)要內(nèi)大外小,盡量把邏輯提取到循環(huán)外 。
提取與循環(huán)無(wú)關(guān)的表達(dá)式,盡量減少循環(huán)內(nèi)不必要計(jì)算 。
循環(huán)內(nèi)盡量使用局部變量 。
循環(huán)展開是一種程序變換,通過增加每次迭代計(jì)算的元素的數(shù)量,減少循環(huán)的迭代次數(shù) 。還有循環(huán)分塊的騷操作 。
### 防御性編程適可而止
有兩個(gè)流派,一個(gè)是完全的不信任,即所有函數(shù)調(diào)用里都對(duì)參數(shù)判斷,包括判空,有效性檢查等,但這樣做有幾點(diǎn)不好:
第一,它只是貌似更安全,并不是真的更安全 。
第二,它稀釋代碼濃度,淹沒關(guān)鍵語(yǔ)句 。
第三,如果通過返回值報(bào)告錯(cuò)誤,則加重了調(diào)用者負(fù)擔(dān),調(diào)用者需要添加額外代碼檢查,不然更奇怪 。
第四,重復(fù)判斷空耗CPU 。
第五,埋雷,把本該crash或者暴露的問題埋得更深 。
但這種做法大行其道,它有一定的市場(chǎng)和道理 。
另一個(gè)是界定邊界,區(qū)分公開接口和內(nèi)部實(shí)現(xiàn),檢查只在模塊之間進(jìn)行,就相當(dāng)于進(jìn)園區(qū)的時(shí)候,門衛(wèi)會(huì)檢查你證件,但之后,則不再檢查 。因?yàn)閮?nèi)部實(shí)現(xiàn)是受控的安全上下文,開發(fā)者應(yīng)該完全cover住 。
我主張防御性編程適可而止,但現(xiàn)實(shí)中,軟件開發(fā)通常多人合作,每個(gè)開發(fā)者素質(zhì)不一樣,這就是客觀現(xiàn)實(shí),所以我也理解前一種做法 。
### release干凈
開發(fā)過程中,我們會(huì)加很多診斷信息,比如我們可能接管內(nèi)存分配,從而附加額外的首尾部,通過填寫magic Num捕獲異?;蛘邇?nèi)存越界,但這些信息應(yīng)該只用于開發(fā)階段的DEBUG需要,在release階段應(yīng)該通過預(yù)處理的方式刪除掉 。
日志分級(jí)其實(shí)也體現(xiàn)了這種思想,通常有兩種做法,一個(gè)是定義級(jí)別變量,另一個(gè)是預(yù)處理,預(yù)處理干凈,但需要重新編譯生成image,而變量更靈活,但變量的比較還是有開銷的 。
不要忽視這些診斷調(diào)試信息的開銷,牢記不必做的事情絕不做的原則 。
### 慎用遞歸
遞歸的寫法簡(jiǎn)單,理解起來(lái)也容易,但遞歸是函數(shù)調(diào)用,有棧幀建立撤銷控制跳轉(zhuǎn)的開銷,另外也有爆棧的風(fēng)險(xiǎn),在性能敏感關(guān)鍵路徑,優(yōu)先考慮用非遞歸版本 。
## 4、編譯優(yōu)化(寫不動(dòng)了)
### inline
### restrict
### LTO
### PGO
### 優(yōu)化選項(xiàng)
## 5、其他優(yōu)化(不想寫了)
### 綁核
### SIMD
### 鎖與并發(fā)
#### 鎖的粒度
#### 無(wú)鎖編程
#### Per-cpu data structure & thread local
#### 內(nèi)存屏障
#### 異構(gòu)優(yōu)化/TCO優(yōu)化
比如用GPGPU、FPGA、SmartNIC來(lái)offload原來(lái)cpu的任務(wù),TCO優(yōu)化指的是不以性能優(yōu)化為單一指標(biāo),而是在滿足性能條件下以綜合成本為優(yōu)化直播,當(dāng)然異構(gòu)也包括主動(dòng)利用CPU的avx或者其他邏輯單元,這類優(yōu)化往往編譯器不能自動(dòng)展開(@zrg)


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: