架構(gòu)師
其他
推薦課程
average > 0 ? $model->average . '分' : '10.0分' ?>

c++代碼性能優(yōu)化

K. Kang

特聘講師

18年IT研發(fā)經(jīng)驗。先后在北大方正技術(shù)研究院、方正電子、方正國際、明博教育科技股份有限公司工作,任程序員、高級系統(tǒng)分析員、系統(tǒng)架構(gòu)師、研發(fā)部部門經(jīng)理、研發(fā)中心總監(jiān)等職;擁有20余項國家發(fā)明專利。



9年培訓經(jīng)驗,從事企業(yè)IT軟件設(shè)計培訓及咨詢,曾任方正電子內(nèi)部高級講師、信產(chǎn)部計算機技術(shù)培訓中心高級技術(shù)顧問。
康老師對軟件設(shè)計中的理論結(jié)合實際、折中有深刻的體會和經(jīng)驗。以案例豐富,從實際項目出發(fā),來源于實踐而著稱,擅長用直白的語言說明復雜的原理。

18年IT研發(fā)經(jīng)驗。先后在北大方正技術(shù)研究院、方正電子、方正國際、明博教育科技股份有限公司工作,任程序員、高級系統(tǒng)分析員、系統(tǒng)架構(gòu)師、研發(fā)部部門經(jīng)理、研發(fā)中心總監(jiān)等職;擁有20余項國家發(fā)明專利。 9年培訓經(jīng)驗,從事企業(yè)IT軟件設(shè)計培訓及咨詢,曾任方正電子內(nèi)部高級講師、信產(chǎn)部計算機技術(shù)培訓中心高級技術(shù)顧問。 康老師對軟件設(shè)計中的理論結(jié)合實際、折中有深刻的體會和經(jīng)驗。以案例豐富,從實際項目出發(fā),來源于實踐而著稱,擅長用直白的語言說明復雜的原理。

課程費用

6800.00 /人

課程時長

2

成為教練

課程簡介

在當今軟件開發(fā)領(lǐng)域,C++以其高效、靈活的特性成為了許多高性能項目的首選編程語言。然而,要充分發(fā)揮C++的性能優(yōu)勢,軟件開發(fā)人員需要具備扎實的C++功底和出色的代碼優(yōu)化能力。本課程旨在幫助學員提升C++代碼性能優(yōu)化設(shè)計的能力,從而更好地應(yīng)對各種復雜的軟件開發(fā)挑戰(zhàn)。

目標收益

通過本課程的學習,您將能夠熟練掌握C++代碼性能優(yōu)化的方法和技巧,為您的項目帶來更高的性能和穩(wěn)定性。課程1/3的時間介紹C++設(shè)計思想和原理,1/3時間案例,并且要求學員組合成小組進行現(xiàn)場設(shè)計。 最后1/3時間再介紹該案例的設(shè)計過程,講師帶領(lǐng)大家一起對設(shè)計結(jié)果進行分析,指出不”和諧”的地方,通過逐步運用模式,改善設(shè)計。 而不是把最完美的答案一下子放到學員的面前,并分析為什么這么設(shè)計,而不是過度設(shè)計,什么情況下可以不拘泥于現(xiàn)有的原則。

培訓對象

課程大綱

第一單元:C++中的錯陷阱辨析 內(nèi)容一:C++程序編譯、調(diào)試及運行中的常見問題處理
1.對象的賦值與對象的復制
2.引起循環(huán)依賴的問題
3.析構(gòu)函數(shù)引起的問題
4.如何正確地初始化對象
5.小心內(nèi)存越界
6.正確地釋放內(nèi)存
7.臨時對象的陷阱
8.降低系統(tǒng)間模塊的耦合度
內(nèi)容二:C/C++內(nèi)存管理
1.C++內(nèi)存分配方式
2.長度明確
3.預估內(nèi)存
4.防止棧溢出
5.避免在堆中頻繁地申請、釋放小塊內(nèi)存
6.多塊內(nèi)存盡量大小相同,互相靠近
7.了解系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的運作機制
8.考慮分配順序
9.類的內(nèi)存分布(初始化順序等)
10.值對象的注意點(函數(shù)傳參、臨時變量、函數(shù)替代參數(shù))
實例對象與指針對象的異同
內(nèi)容三:C++中函數(shù)寫法及注意點
1.直接調(diào)用個數(shù)與調(diào)用者的個數(shù)
2.好函數(shù)的2個原則(長度及其它)
3.函數(shù)參數(shù)個數(shù)
4.丑陋的標識參數(shù),及如何避免的技巧
5.使用描述性名稱(閱讀“深合己意”的代碼)
6.switch語句
內(nèi)容四:C++的繼承與派生編程技術(shù)
1.虛函數(shù)與虛表的原理
2.派生類及成員定義語法
3.派生類的成員設(shè)計
4.繼承的方式
5.虛函數(shù)與多態(tài)性的編程技術(shù)
6.虛函數(shù)、純虛函數(shù)和抽象類
7.多態(tài)的本質(zhì)
8.泛型與多態(tài)
第二單元:
C++性能優(yōu)化思路與原則實踐
內(nèi)容一:性能優(yōu)化的關(guān)鍵第一步
1.避免想當然,一切用數(shù)據(jù)說話!
2.借助工具(Valgrind、gprof、fprofile)
3.性能可視化工具
4.代碼級性能分析
5.操作系統(tǒng)與硬件監(jiān)控(如top、htop、vmstat、iostat、netstat等)
6.案例分析—某復合文檔系統(tǒng),性能優(yōu)化分析與討論。
內(nèi)容二:性能優(yōu)化的常用思路
1.空間換時間
2.冗余數(shù)據(jù)及結(jié)構(gòu)
3.并發(fā)與并行
4.算法優(yōu)化
5.編譯器優(yōu)化
6.嵌套循環(huán)中的內(nèi)存管理優(yōu)化
7.I/O優(yōu)化
8.代碼重構(gòu)與設(shè)計優(yōu)化
案例分析—某網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)等,討論性能優(yōu)化處理方案。
內(nèi)容三:消息發(fā)布訂閱間接設(shè)計
1.消息總線與觀察者模式
2.消息發(fā)布訂閱模式
3.C++設(shè)計中間接的使用
4.效率與結(jié)構(gòu)的合理取舍
案例分析—某數(shù)據(jù)分析系統(tǒng), 使用生產(chǎn)者-消費者模式重構(gòu)系統(tǒng),及不同方案的對比討論。
內(nèi)容四:其他性能優(yōu)化設(shè)計原則
1.Sockket設(shè)計:使用非阻塞I/O、使用事件驅(qū)動模型、使用連接池、使用緩沖區(qū)
2.IO設(shè)計:使用緩沖區(qū)、避免頻繁的磁盤讀寫、使用異步I/O、優(yōu)化數(shù)據(jù)結(jié)構(gòu)和算法、減少內(nèi)存分配和釋放、使用高效的文件格式
3.循環(huán):循環(huán)展開、循環(huán)交換、循環(huán)合并、循環(huán)依賴分析、循環(huán)并行化
4.其他:
案例分析—案例說明上述性能優(yōu)化原則。
第三單元:c++系統(tǒng)設(shè)計原則與模式 ——成為優(yōu)秀的設(shè)計師
內(nèi)容一:C++設(shè)計原則的具體運用
1.封裝: 利用類的特征將數(shù)據(jù)和函數(shù)隱藏。
2.李斯卡替換原則及其運用
3.策略和實現(xiàn)分離的必要性
4.隔離不同的因素
5.對系統(tǒng)中常見的,多種情況組合的處理方法。
6.對復雜行為的處理。
7.用間接增強系統(tǒng)的靈活性
8.設(shè)計穩(wěn)定結(jié)構(gòu)的要點
9.對已存在的模塊,如何動態(tài)改變其行為
10.C++中進行抽象的技巧
案例分析—略
內(nèi)容二:C++中的設(shè)計模式
1.創(chuàng)建型模式討論
2.行為型模式
a)Adapter與Bridge
b)Composite、Decorator與Proxy
c)Fa?ade模式 與 Adapter模式 /Proxy模式
d)Composite 與Iterator模式
3.結(jié)構(gòu)型模式
a)封裝變化-Strategy/State/ Iterator模式
b)封裝結(jié)構(gòu)---Mediator模式與Facade模式
c)對象作為參數(shù)-- Visitor/Command/Mementor
d)通信應(yīng)該被封裝還是被分布- Mediator和Observer
e)對發(fā)送者和接收者解耦-Command模式與職責鏈模式
將實踐中常容易混淆或常常聯(lián)合使用的幾個模式放在一組討論,對比分析,講解思想。如何發(fā)現(xiàn)、應(yīng)用更多模式。通過對“相似或相關(guān)的設(shè)計模式”的對比分析,加深理解,是避免“模式誤用”的好方法。
內(nèi)容三:案例實踐– 多功能文件處理系統(tǒng)設(shè)計
1.介紹項目背景情況,如何應(yīng)對將來的各種變化
2.學員分組進行設(shè)計
3.應(yīng)用設(shè)計原則及模式來改善設(shè)計
4.分析設(shè)計模式是否帶來軟件的可維護性
5.學習(Factory Method/Adapter/Proxy/Observer/Strategy等幾種設(shè)計模式和設(shè)計原則)、
內(nèi)容四:案例上機實踐–薪酬管理系統(tǒng)設(shè)計應(yīng)用分析
1.Robort C Martion 是如何考慮問題的
2.架構(gòu)思路
3.設(shè)計中的博弈點,哪些值得我們學習
4.Martion設(shè)計的過程中是怎樣應(yīng)用思考的。
5.學習設(shè)計模式(strategy / /Template Method/ Adapter/ Command)
6.通過研讀經(jīng)典學習到什么?
第四單元:c++系統(tǒng)設(shè)計策略 內(nèi)容一:重構(gòu)已有的系統(tǒng)
1.設(shè)計壞味道概述
2.重構(gòu)思想
3.理解如何結(jié)合重構(gòu)和模式;
4.用模式導向的重構(gòu)(pattern-directed refactoring)改善既有代碼的設(shè)計;
5.找出需要進行模式導向重構(gòu)的代碼段;
6.了解為什么使用模式來改善既有的設(shè)計要優(yōu)于在新的設(shè)計早期使用模式。
7.一組壞味 (也就是問題),表示需要進行模式導向的重構(gòu);
8.實現(xiàn)同一模式的不同方式的示例;
9.什么時候應(yīng)該通過重構(gòu)實現(xiàn)模式、趨向模式以及去除模式給出建議。
10.常見設(shè)計模式的重構(gòu)演化的過程

內(nèi)容二:案例- 某網(wǎng)絡(luò)數(shù)據(jù)分析系統(tǒng)的設(shè)計
1.介紹項目需求情況,進行設(shè)計
2.通過重構(gòu)逐步實現(xiàn)設(shè)計模式
3.Framework 設(shè)計思想—好萊塢原則
4.學習設(shè)計模式(Factory Method, Template Method, Composite, Chain of Responsibility )
內(nèi)容三、C++軟件架構(gòu)中需要考慮的幾個維度
1.考慮運維的因素
2.考慮系統(tǒng)運營的因素
3.考慮技術(shù)的因素
典型案例分析:結(jié)合多個項目實例,分
內(nèi)容四、架構(gòu)要素
1.架構(gòu)要素之:C++分層
2.架構(gòu)要素之:C++中的間接
3.架構(gòu)要素之:抽象與統(tǒng)一
4.架構(gòu)要素之:為模塊分配合適的職責
5.架構(gòu)要素之:選擇合適的框架與模式
6.架構(gòu)要素之:引入領(lǐng)域模型
7.架構(gòu)要素之:考慮技術(shù)和商業(yè)趨勢
架構(gòu)要素之:平臺化考慮
內(nèi)容五:案例–電子文件系統(tǒng)
1.項目系統(tǒng)背景和需求
2.Bridge / strategy / class explosion的博弈。
3.系統(tǒng)的設(shè)計的本質(zhì) – 不是為了模式
4.如何支持第3方接入的運用 - Template Method VS。 IOC
5.系統(tǒng)的設(shè)計思考過程
6.展示如何用,進行設(shè)計
第一單元:C++中的錯陷阱辨析
內(nèi)容一:C++程序編譯、調(diào)試及運行中的常見問題處理
1.對象的賦值與對象的復制
2.引起循環(huán)依賴的問題
3.析構(gòu)函數(shù)引起的問題
4.如何正確地初始化對象
5.小心內(nèi)存越界
6.正確地釋放內(nèi)存
7.臨時對象的陷阱
8.降低系統(tǒng)間模塊的耦合度
內(nèi)容二:C/C++內(nèi)存管理
1.C++內(nèi)存分配方式
2.長度明確
3.預估內(nèi)存
4.防止棧溢出
5.避免在堆中頻繁地申請、釋放小塊內(nèi)存
6.多塊內(nèi)存盡量大小相同,互相靠近
7.了解系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的運作機制
8.考慮分配順序
9.類的內(nèi)存分布(初始化順序等)
10.值對象的注意點(函數(shù)傳參、臨時變量、函數(shù)替代參數(shù))
實例對象與指針對象的異同
內(nèi)容三:C++中函數(shù)寫法及注意點
1.直接調(diào)用個數(shù)與調(diào)用者的個數(shù)
2.好函數(shù)的2個原則(長度及其它)
3.函數(shù)參數(shù)個數(shù)
4.丑陋的標識參數(shù),及如何避免的技巧
5.使用描述性名稱(閱讀“深合己意”的代碼)
6.switch語句
內(nèi)容四:C++的繼承與派生編程技術(shù)
1.虛函數(shù)與虛表的原理
2.派生類及成員定義語法
3.派生類的成員設(shè)計
4.繼承的方式
5.虛函數(shù)與多態(tài)性的編程技術(shù)
6.虛函數(shù)、純虛函數(shù)和抽象類
7.多態(tài)的本質(zhì)
8.泛型與多態(tài)
第二單元:
C++性能優(yōu)化思路與原則實踐
內(nèi)容一:性能優(yōu)化的關(guān)鍵第一步
1.避免想當然,一切用數(shù)據(jù)說話!
2.借助工具(Valgrind、gprof、fprofile)
3.性能可視化工具
4.代碼級性能分析
5.操作系統(tǒng)與硬件監(jiān)控(如top、htop、vmstat、iostat、netstat等)
6.案例分析—某復合文檔系統(tǒng),性能優(yōu)化分析與討論。
內(nèi)容二:性能優(yōu)化的常用思路
1.空間換時間
2.冗余數(shù)據(jù)及結(jié)構(gòu)
3.并發(fā)與并行
4.算法優(yōu)化
5.編譯器優(yōu)化
6.嵌套循環(huán)中的內(nèi)存管理優(yōu)化
7.I/O優(yōu)化
8.代碼重構(gòu)與設(shè)計優(yōu)化
案例分析—某網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)等,討論性能優(yōu)化處理方案。
內(nèi)容三:消息發(fā)布訂閱間接設(shè)計
1.消息總線與觀察者模式
2.消息發(fā)布訂閱模式
3.C++設(shè)計中間接的使用
4.效率與結(jié)構(gòu)的合理取舍
案例分析—某數(shù)據(jù)分析系統(tǒng), 使用生產(chǎn)者-消費者模式重構(gòu)系統(tǒng),及不同方案的對比討論。
內(nèi)容四:其他性能優(yōu)化設(shè)計原則
1.Sockket設(shè)計:使用非阻塞I/O、使用事件驅(qū)動模型、使用連接池、使用緩沖區(qū)
2.IO設(shè)計:使用緩沖區(qū)、避免頻繁的磁盤讀寫、使用異步I/O、優(yōu)化數(shù)據(jù)結(jié)構(gòu)和算法、減少內(nèi)存分配和釋放、使用高效的文件格式
3.循環(huán):循環(huán)展開、循環(huán)交換、循環(huán)合并、循環(huán)依賴分析、循環(huán)并行化
4.其他:
案例分析—案例說明上述性能優(yōu)化原則。
第三單元:c++系統(tǒng)設(shè)計原則與模式 ——成為優(yōu)秀的設(shè)計師

內(nèi)容一:C++設(shè)計原則的具體運用
1.封裝: 利用類的特征將數(shù)據(jù)和函數(shù)隱藏。
2.李斯卡替換原則及其運用
3.策略和實現(xiàn)分離的必要性
4.隔離不同的因素
5.對系統(tǒng)中常見的,多種情況組合的處理方法。
6.對復雜行為的處理。
7.用間接增強系統(tǒng)的靈活性
8.設(shè)計穩(wěn)定結(jié)構(gòu)的要點
9.對已存在的模塊,如何動態(tài)改變其行為
10.C++中進行抽象的技巧
案例分析—略
內(nèi)容二:C++中的設(shè)計模式
1.創(chuàng)建型模式討論
2.行為型模式
a)Adapter與Bridge
b)Composite、Decorator與Proxy
c)Fa?ade模式 與 Adapter模式 /Proxy模式
d)Composite 與Iterator模式
3.結(jié)構(gòu)型模式
a)封裝變化-Strategy/State/ Iterator模式
b)封裝結(jié)構(gòu)---Mediator模式與Facade模式
c)對象作為參數(shù)-- Visitor/Command/Mementor
d)通信應(yīng)該被封裝還是被分布- Mediator和Observer
e)對發(fā)送者和接收者解耦-Command模式與職責鏈模式
將實踐中常容易混淆或常常聯(lián)合使用的幾個模式放在一組討論,對比分析,講解思想。如何發(fā)現(xiàn)、應(yīng)用更多模式。通過對“相似或相關(guān)的設(shè)計模式”的對比分析,加深理解,是避免“模式誤用”的好方法。
內(nèi)容三:案例實踐– 多功能文件處理系統(tǒng)設(shè)計
1.介紹項目背景情況,如何應(yīng)對將來的各種變化
2.學員分組進行設(shè)計
3.應(yīng)用設(shè)計原則及模式來改善設(shè)計
4.分析設(shè)計模式是否帶來軟件的可維護性
5.學習(Factory Method/Adapter/Proxy/Observer/Strategy等幾種設(shè)計模式和設(shè)計原則)、
內(nèi)容四:案例上機實踐–薪酬管理系統(tǒng)設(shè)計應(yīng)用分析
1.Robort C Martion 是如何考慮問題的
2.架構(gòu)思路
3.設(shè)計中的博弈點,哪些值得我們學習
4.Martion設(shè)計的過程中是怎樣應(yīng)用思考的。
5.學習設(shè)計模式(strategy / /Template Method/ Adapter/ Command)
6.通過研讀經(jīng)典學習到什么?
第四單元:c++系統(tǒng)設(shè)計策略
內(nèi)容一:重構(gòu)已有的系統(tǒng)
1.設(shè)計壞味道概述
2.重構(gòu)思想
3.理解如何結(jié)合重構(gòu)和模式;
4.用模式導向的重構(gòu)(pattern-directed refactoring)改善既有代碼的設(shè)計;
5.找出需要進行模式導向重構(gòu)的代碼段;
6.了解為什么使用模式來改善既有的設(shè)計要優(yōu)于在新的設(shè)計早期使用模式。
7.一組壞味 (也就是問題),表示需要進行模式導向的重構(gòu);
8.實現(xiàn)同一模式的不同方式的示例;
9.什么時候應(yīng)該通過重構(gòu)實現(xiàn)模式、趨向模式以及去除模式給出建議。
10.常見設(shè)計模式的重構(gòu)演化的過程

內(nèi)容二:案例- 某網(wǎng)絡(luò)數(shù)據(jù)分析系統(tǒng)的設(shè)計
1.介紹項目需求情況,進行設(shè)計
2.通過重構(gòu)逐步實現(xiàn)設(shè)計模式
3.Framework 設(shè)計思想—好萊塢原則
4.學習設(shè)計模式(Factory Method, Template Method, Composite, Chain of Responsibility )
內(nèi)容三、C++軟件架構(gòu)中需要考慮的幾個維度
1.考慮運維的因素
2.考慮系統(tǒng)運營的因素
3.考慮技術(shù)的因素
典型案例分析:結(jié)合多個項目實例,分
內(nèi)容四、架構(gòu)要素
1.架構(gòu)要素之:C++分層
2.架構(gòu)要素之:C++中的間接
3.架構(gòu)要素之:抽象與統(tǒng)一
4.架構(gòu)要素之:為模塊分配合適的職責
5.架構(gòu)要素之:選擇合適的框架與模式
6.架構(gòu)要素之:引入領(lǐng)域模型
7.架構(gòu)要素之:考慮技術(shù)和商業(yè)趨勢
架構(gòu)要素之:平臺化考慮
內(nèi)容五:案例–電子文件系統(tǒng)
1.項目系統(tǒng)背景和需求
2.Bridge / strategy / class explosion的博弈。
3.系統(tǒng)的設(shè)計的本質(zhì) – 不是為了模式
4.如何支持第3方接入的運用 - Template Method VS。 IOC
5.系統(tǒng)的設(shè)計思考過程
6.展示如何用,進行設(shè)計

課程費用

6800.00 /人

課程時長

2

預約體驗票 我要分享

近期公開課推薦

近期公開課推薦

活動詳情

提交需求