400-888-5228

課程介紹:

本課程主要針對C++程序的性能優(yōu)化進(jìn)行全局性介紹,詳細(xì)講解C++語言的對象模型,與性能有關(guān)的語言特性及一些數(shù)據(jù)結(jié)構(gòu)的性能,C++程序內(nèi)存使用的優(yōu) 化。結(jié)合一些操作系統(tǒng)的內(nèi)存管理機(jī)制介紹如何在特定的平臺(tái)下進(jìn)行內(nèi)存優(yōu)化。此外,還將深入介紹C++語言管理動(dòng)態(tài)內(nèi)存的機(jī)制和方法,并介紹一個(gè)常用的內(nèi)存 管理方法,即內(nèi)存池的實(shí)現(xiàn)。介紹程序啟動(dòng)性能的優(yōu)化。介紹3類性能工具,即內(nèi)存分析工具、性能分析工具和I/O檢測工具;本課程理論結(jié)合實(shí)戰(zhàn),全面提升 C++技術(shù)開發(fā)人員的性能優(yōu)化能力。

 

課程長度:

2天

課程對象:

有一定C++開發(fā)經(jīng)驗(yàn)的開發(fā)人員

 

課程大綱:

第1篇? 應(yīng)用程序性能優(yōu)化概述

第1章? 應(yīng)用程序性能優(yōu)化概述

1.1? 應(yīng)用程序性能的定義

1.2? 性能基準(zhǔn)

1.2.1? 基準(zhǔn)負(fù)載

1.2.2? 基準(zhǔn)用例

1.2.3? 性能基準(zhǔn)的運(yùn)行

1.2.4? 性能基準(zhǔn)結(jié)果

1.3? 性能分析方法概述

1.4? 性能優(yōu)化方法概述

第2篇? C++程序優(yōu)化基礎(chǔ)

第2章? C++對象模型

2.1? 基本概念

2.1.1? 程序使用內(nèi)存區(qū)

2.1.2? 全局/靜態(tài)存儲(chǔ)區(qū)及常量數(shù)據(jù)區(qū)

2.1.3? 堆和棧

2.1.4? C++中的對象

2.2? 對象的生命周期

2.3? C++對象的內(nèi)存布局

2.3.1? 簡單對象

2.3.2? 單繼承

2.3.3? 多繼承

2.4? 構(gòu)造與析構(gòu)

第3章? C++語言特性中的性能分析

3.1? 構(gòu)造函數(shù)與析構(gòu)函數(shù)

3.2? 繼承與虛擬函數(shù)

3.3? 臨時(shí)對象

3.4? 內(nèi)聯(lián)函數(shù)

第4章? 常用數(shù)據(jù)結(jié)構(gòu)的性能分析

4.1? 常用數(shù)據(jù)結(jié)構(gòu)性能分析

4.1.1? 遍歷

4.1.2? 插入

4.1.3? 刪除

4.1.4? 排序

4.1.5? 查找

4.2? 動(dòng)態(tài)數(shù)組的實(shí)現(xiàn)及分析

4.2.1? 動(dòng)態(tài)數(shù)組簡介

4.2.2? 動(dòng)態(tài)數(shù)組實(shí)踐及分析

第3篇? 內(nèi)存使用優(yōu)化

第5章? 操作系統(tǒng)的內(nèi)存管理

5.1? Windows內(nèi)存管理

5.1.1? 使用虛擬內(nèi)存

5.1.2? 訪問虛擬內(nèi)存時(shí)的處理流程

5.1.3? 虛擬地址到物理地址的映射

5.1.4? 虛擬內(nèi)存空間使用狀態(tài)記錄

5.1.5? 進(jìn)程工作集

5.1.6? Win32內(nèi)存相關(guān)API

5.2? Linux內(nèi)存管理機(jī)制

5.2.1? 進(jìn)程的內(nèi)存布局

5.2.2? 物理內(nèi)存管理

5.2.3? 虛擬內(nèi)存管理

5.2.4? 虛擬地址映射為物理地址

第6章? 動(dòng)態(tài)內(nèi)存管理

6.1? operator new/delete

6.2? 自定義全局operator new/delete

6.3? 自定義類operator new/delete

6.4? 避免內(nèi)存泄漏

6.5? 智能指針

第7章? 內(nèi)存池

7.1? 自定義內(nèi)存池性能優(yōu)化的原理

7.1.1? 默認(rèn)內(nèi)存管理函數(shù)的不足

7.1.2? 內(nèi)存池的定義和分類

7.1.3? 內(nèi)存池工作原理示例

7.2? 一個(gè)內(nèi)存池的實(shí)現(xiàn)實(shí)例

7.2.1? 內(nèi)部構(gòu)造

7.2.2? 總體機(jī)制

7.2.3? 細(xì)節(jié)剖析

7.2.4? 使用方法

7.2.5? 性能比較

第4篇? 應(yīng)用程序啟動(dòng)性能優(yōu)化

第8章? 動(dòng)態(tài)鏈接與動(dòng)態(tài)庫

8.1? 鏈接技術(shù)的發(fā)展

8.1.1? 編譯、鏈接和加載

8.1.2? 靜態(tài)鏈接與靜態(tài)鏈接庫

8.1.3? 動(dòng)態(tài)鏈接與動(dòng)態(tài)庫

8.2? Windows DLL,Dynamic Linked Library

8.2.1? DLL基礎(chǔ)

8.2.2? DLL如何工作

8.2.3? 關(guān)于DLL的雜項(xiàng)

8.3? Linux DSO

8.3.1? DSO與ELF

8.3.2? DSO如何工作

8.3.3? 構(gòu)建與使用DSO

第9章? 程序啟動(dòng)過程

9.1? Win32程序啟動(dòng)過程

9.2? Linux程序啟動(dòng)過程

9.3? 影響程序啟動(dòng)性能的因素

9.3.1? 源代碼因素

9.3.2? 動(dòng)態(tài)鏈接庫因素

9.3.3? 配置文件/資源文件因素

9.3.4? 其他因素

第10章? 程序啟動(dòng)性能優(yōu)化

10.1? 優(yōu)化程序啟動(dòng)性能的步驟

10.2? 測試程序啟動(dòng)性能的方法

10.3? 優(yōu)化可執(zhí)行文件和庫文件

10.3.1? 減少動(dòng)態(tài)鏈接庫的數(shù)量

10.3.2? 減小動(dòng)態(tài)鏈接庫尺寸

10.3.3? 優(yōu)化可執(zhí)行文件和庫文件中的代碼布局

10.4? 優(yōu)化源代碼

10.4.1? 優(yōu)化啟動(dòng)時(shí)讀取的配置文件及幫助文件

10.4.2? 預(yù)讀頻繁訪問的文件

10.4.3? 清除產(chǎn)生exception的代碼

10.4.4? PreLoad

10.4.5? 延遲初始化

10.4.6? 多線程化啟動(dòng)

第5篇? 性能工具

第11章? 內(nèi)存分析工具

IBM Rational Purify

11.1? Rational Purify工作原理

11.2? 使用Rational Purify來發(fā)現(xiàn)內(nèi)存泄漏

11.2.1? 內(nèi)存泄漏及其對應(yīng)用程序性能的影響

11.2.2? 用PerfMon來發(fā)現(xiàn)Windows系統(tǒng)中有嚴(yán)重后果的內(nèi)存泄漏

11.2.3? 用Rational Purify來定位內(nèi)存泄漏

11.2.4? 典型的內(nèi)存泄漏錯(cuò)誤

11.3? Rational Purify使用指南

11.4? Rational Purify實(shí)例分析

第12章? 性能分析工具

IBM Rational Quantify

12.1? Rational Quantify工作原理

12.2? Rational Quantify使用指南

12.3? Rational Quantify實(shí)例分析

第13章? 實(shí)時(shí)IO監(jiān)測工具FileMon

13.1? FileMon的工作原理

13.2? FileMon使用指南

13.3? 使用FileMon解決問題