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

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

K. Kang

特聘講師

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



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

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

課程費(fèi)用

6800.00 /人

課程時(shí)長

2

成為教練

課程簡介

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

目標(biāo)收益

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

培訓(xùn)對象

課程大綱

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

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

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

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

課程費(fèi)用

6800.00 /人

課程時(shí)長

2

預(yù)約體驗(yàn)票 我要分享

近期公開課推薦

近期公開課推薦

活動詳情

提交需求