国产AV88|国产乱妇无码在线观看|国产影院精品在线观看十分钟福利|免费看橹橹网站

編程的技術——如何提高程序性能

發(fā)布時間:2023-4-26 | 雜志分類:其他
免費制作
更多內(nèi)容

編程的技術——如何提高程序性能

編程的技術——如何提高程序性能
粉絲: {{bookData.followerCount}}
文本內(nèi)容
第1頁

編程的技術

如何提高程序性能

賀楷鍇

2018.6.8

第2頁

目錄 01

02

03

04

什么是性能

我們面臨哪些性能問題

提高性能的策略

還有什么可以做的

第3頁

01 什么是性能

第4頁

性能的概念

性能 ≈ 速度

性能是計算機資源的一種體現(xiàn)

第5頁

計算機資源與軟件

軟件 硬件

第6頁

性能的本質是權衡

CPU耗用

內(nèi)存占用

硬盤占用

時間消耗

程序復雜度

軟件易用性

CPU耗用

內(nèi)存占用

硬盤占用

時間消耗

程序復雜度

軟件易用性

第7頁

Google 開發(fā)了Protobuf庫用于替換

Google服務器之間的xml數(shù)據(jù)通訊格式,

從而減少了服務器之間通訊的時間開銷,

總體提高了google對外服務的效率。后

protobuf在08年左右對外開源

Google Protobuf

在內(nèi)存硬件更加便宜,內(nèi)存硬件的制作

技術更加先進,容量更大的情況下將高

速變化的數(shù)據(jù)用內(nèi)存存儲,以數(shù)據(jù)庫的

形式來使用

內(nèi)存數(shù)據(jù)庫

JSON是一種比xml格式更加輕量更加高

效的格式,最早誕生于2001年,后在

2005年~2006年之間開始廣泛流行起來,

在很多方面可以替代xml格式

JSON

CPU硬件核心數(shù)越來越多,更加充分

的利用CPU核心可以帶來更高的程序

性能,大大減少復雜運算計算的時間

多線程

IT行業(yè)中一些權衡的例子

第8頁

02 我們面臨哪些性能問題

第9頁

32位程序內(nèi)存使用限制在

2G,大數(shù)據(jù)操作時程序很

容易內(nèi)存不足而崩潰

客戶的機器硬件很好,32核、64

核的CPU,可是我們的程序還是

跑的很慢,機器根本沒有壓力

產(chǎn)品的接口就是這樣,因為調(diào)用

次數(shù)特別多,所以特別慢,如果

產(chǎn)品不提高接口的調(diào)用性能,就

無法提高程序性能

程序的性能瓶頸很清楚,磁盤讀

寫太慢,但是業(yè)務流程如此沒有

改進的余地了

程序流程不復雜,數(shù)據(jù)量也不

大,但程序就是跑的特別慢

硬盤換內(nèi)存,用文件緩存,減少內(nèi)存消耗

升級程序為64位程序,可以使用更多的內(nèi)存

程序需要更加復雜,使用多線程可以使用更多的

硬件

程序存在瓶頸,某個瓶頸導致了程序無法充分利

用硬件

程序的細節(jié)很重要,很多時候性能消耗在一些細節(jié)

的地方,這個需要編程的技巧

升級硬件、換SSD,或者不改程序什么都解決了

約復雜的流程越有改進的余地,適當改進流程或許

什么都好了

批量操作和單次操作存在很大的區(qū)別,開

門關門效應是最大的攔路虎,必須對兩種

操作區(qū)別對待

我們常見的一些性能問題

第10頁

總結性能問題的分類

1、硬件性能無法充分的利用

2、硬件不足程序執(zhí)行受到限制

3、程序代碼實現(xiàn)太差或策略不好,整體性能低

4、程序瓶頸清楚,但受業(yè)務限制,無法改進

5、批量操作太慢,無法提高性能

第11頁

03 提高性能的策略

第12頁

細節(jié)決定成敗

代價守恒、等價交換

堆硬件也是一種改進

重復造輪子是大忌

業(yè)務也可以變通

性能改進策略

程序的性能很多情況下體現(xiàn)在細節(jié)上,做好程

序的細節(jié)以提高程序的性能

任何事物都是有其價值的,性能的改進也是如

此,程序的性能是靠等價的其他代價換回來的

學習Android用堆硬件的方法也可以提高用戶

體驗改進程序性能,看起來未必優(yōu)雅但是很

實用

重復的工作不要做,能夠不用做的工作都不要做,

時時刻刻注意開門關門帶來的性能損失

客戶未必是完全不講道理的,合理的理由也

可以做到業(yè)務的變通。

第13頁

程序的細節(jié)決定了程序的性能

第14頁

程序的細節(jié)決定了程序的性能2

成百上千的函數(shù)

百萬千萬次的調(diào)用

第15頁

程序的細節(jié)決定了程序的性能3

第16頁

程序的細節(jié)決定了程序的性能4

金屬疲勞是因為金屬內(nèi)部微小瑕疵反復受外力影響次序放大引起

程序的微小細節(jié)不足會因為千萬次的調(diào)用而被放大

為什么金屬疲勞時會產(chǎn)生破壞作用呢?這是因為金屬內(nèi)部結構并不均勻,從而造成應力傳遞的不平衡,有

的地方會成為應力集中區(qū)。與此同時,金屬內(nèi)部的缺陷處還存在許多微小的裂紋。在力的持續(xù)作用下,裂

紋會越來越大,材料中能夠傳遞應力部分越來越少,直至剩余部分不能繼續(xù)傳遞負載時,金屬構件就會全

部毀壞。

第17頁

重復造輪子是大忌

把大象放到冰箱要怎么做?

把100頭大象放到冰箱要怎么做?

循環(huán)100遍

循環(huán)100遍

第18頁

重復造輪子是大忌2

第19頁

重復造輪子是大忌3

數(shù)據(jù)結構轉換消耗了大量的程序時間

結構A 結構B 結構C 結構N

單向數(shù)據(jù)結構轉換,從簡單到復雜或從復雜到簡單

結構A 結構B 結構C 結構B 結構N

結構A

結構B

結構C

第20頁

重復造輪子是大忌4

大部分存在性能問題的程序是因為

重復工作消耗了大量的程序時間

請大家思考…

1、為什么城市要提供公交車服務?

2、物流和快遞什么區(qū)別?又是什么關系?

3、GIS矢量數(shù)據(jù)為什么要按照幾何類型集中存儲?

第21頁

重復造輪子是大忌5

1、能不做的事情一定不要做

2、可做可不做的事情最好也不做

3、把事情放到循環(huán)外面做

4、不做數(shù)據(jù)結構轉換或少做轉換

第22頁

代價守恒、等價交換

任何事物都有其價值

分析確定程序的性能瓶頸,尋找可以等價交換的代價

CPU耗

硬盤存儲

內(nèi)存占用

程序復雜

流程復雜

程序執(zhí)行時

內(nèi)存存儲

網(wǎng)絡IO

數(shù)學

硬件

參數(shù)

度量

價值

時間

金錢

復雜度

拿什么來換什么?

第23頁

代價守恒、等價交換2

1、CPU占用很高,界面很卡

用多核去做任務

慢的事情放在后臺,保證前臺界面流暢

2、任務執(zhí)行時間很長,需要加快速度

分解任務,急需要的工作先做,不急需后臺做,后面出來結果

用多核并行去做

3、網(wǎng)絡IO非常高,執(zhí)行速度慢

改用新的數(shù)據(jù)結構,壓縮數(shù)據(jù)結構大小,減少網(wǎng)絡IO

程序需要做的更復雜一些,調(diào)整工作流程,減少不必要的網(wǎng)絡調(diào)用

第24頁

代價守恒、等價交換3

4、硬盤很忙,任務執(zhí)行慢

多用內(nèi)存,分塊載入內(nèi)存緩存,減少硬盤使用

提高程序復雜度,多用順序讀寫,多用大塊讀寫,少用隨機讀寫

改變程序流程,讀寫分離,減少IO

5、內(nèi)存耗用很大,程序很不穩(wěn)定

使用文件緩存,內(nèi)存中放訪問頻率高的熱數(shù)據(jù),冷數(shù)據(jù)放到文件緩存

第25頁

使用專業(yè)的測試工具測試程序的

每個過程的性能消耗情況

在程序代碼中加入測試

代碼,監(jiān)測局部模塊的

性能消耗

對程序功能進

行性能測試

使用性能測試工具測試整體性能

代碼測試局部性能消耗

測試程序表現(xiàn),識別不同流程的時間

堆硬件也是一種改進

學會尋找程序的瓶頸 時間

第26頁

堆硬件也是一種改進2

第27頁

堆硬件也是一種改進3

內(nèi)存不夠加內(nèi)存

CPU太慢換CPU

硬盤不夠加硬盤

硬盤太慢換SSD

網(wǎng)絡太慢換交換機

從硬件和軟件分析瓶頸

升級硬件以解決瓶頸

第28頁

業(yè)務也可以變通

1、業(yè)務變通并不等同于改變業(yè)務或者定義新業(yè)務流程

2、客戶也并不是不講道理的

3、客戶是業(yè)務專家但不一定是技術專家,技術上的變通也算是一種業(yè)

務的變通

第29頁

04 還有什么可以做的

第30頁

學習統(tǒng)籌學 學會生活

學習基礎數(shù)學

學習統(tǒng)計學 學習哲學

學無止境

哲學讓我們在未知的道路上不會感覺

無助,哲學幫助我們理性的分析問題

生活是最好的老師,將生活中的

經(jīng)驗應用到程序中去,你會有意

想不到的收獲

統(tǒng)籌學是一門系統(tǒng)化的提高效率

的學科,學好統(tǒng)籌學可以很好的

幫助我們提升程序的心梗

學會統(tǒng)計、學會估算會提升

我們的分析能力

數(shù)學永遠是基礎,學會精打細

算才能聚少成多,聚沙成塔

百萬用戶使用云展網(wǎng)進行翻書效果制作,只要您有文檔,即可一鍵上傳,自動生成鏈接和二維碼(獨立電子書),支持分享到微信和網(wǎng)站!
收藏
轉發(fā)
下載
免費制作
其他案例
更多案例
免費制作
x
{{item.desc}}
下載
{{item.title}}
{{toast}}