16程式最佳化.ppt

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
16程式最佳化.ppt

嵌入式系統導論, 探矽工作室 第九章 效能評量、程式最佳化與測試 本章學習重點 效能評量的方法與分析方式 最佳化方式的介紹,包含程式碼的修改、省電的策略、空間縮小的方式 測試策略的介紹 效能評量 即使我們在系統設計上,考量了許多細節因素,包括選擇了擁有最高運算能力的硬體,以及具有即時排程的作業系統,但是這些因素並沒有辦法保證我們的系統在執行的期間能表現出最高效能 我們希望設計系統時可以達到即時的目的,因此分析每個程式或是行程所需要的執行時間就變得很重要 效率量測的難題 執行時間的長短常常與資料的輸入有關 快取將會大幅影響程式的效率 從低階的指令集層級來看,不同的指令集組合,會產生不同的執行時間 量測程式執行的時間 模擬器 (simulator) 計時器 (timer) 邏輯分析儀 (logic analyzer) 執行時間的種類 平均案例執行時間 (average-case execution time) 最差案例執行時間 (worst-case execution time) 最佳案例執行時間 (best-case execution time) 分析程式執行時間 執行時間的定義 執行時間 = 程式順序執行指令的個數 * 平均每個指令所執行的時間 找出程式順序執行指令的個數 量測每一條路徑所耗費的時間 範例9-1 「if else」的資料相關路徑 範例9-1 「if else」的資料相關路徑(續) 控制/資料流程圖 (Control/Data Flow Graph, CDFG) 範例9-2 迴圈的執行路徑 指令時間的計算 指令時間量測的問題: 不是所有的指令所耗費的時間都一樣 指令執行時間不獨立 指令執行時間可能與運算子數值相關 可以採用查表的方式來解決 程式執行分支真值表 快取影響 快取就是為了加速所設計,用來加速指令與資料的存取時間 因為快取的內容與存取的歷史相依。所以須要採用追蹤驅動 (trace-driven)與靜態/動態分析的方式來決定所造成的影響 如何產生追蹤記錄 硬體的方式 利用邏輯分析儀 有些CPU可以自動產生這些追蹤記錄 軟體的方式 透過PC取樣 (PC sampling) 儀表指令 (instrumentation instructions) 模擬 (simulation) 追蹤分析 得到了追蹤記錄可以: 決定全部所花費的執行時間 分析快取的行為 評估該支程式在不同CPU上面的效率 程式最佳化 目的在於增進程式的效能 常見的最佳化方式 迴圈最佳化 快取最佳化 省電最佳化 程式空間最佳化 迴圈最佳化 迴圈程式需要花費最多的時間作相同的事情 可以採用的方式: 程式碼調整 (code motion) 消除引導變數 (induction variable elimination) 減少強度 (strength reduction) 範例9-3 迴圈中程式碼調整 範例9-4 引導變數的消除 範例9-5 降低運算強度 範例9-6 反覆空間範圍的改善 範例9-7 快取空間 省電最佳化 使用較好的演算法,來取代比較複雜且耗電的運算 減少記憶體存取的動作,將會降低耗電 減少存取硬碟的動作,將可以減少一些電流的耗費 關閉其他不使用的周邊裝置方式,或是在平常時候,讓CPU進入睡眠或是半睡眠模式的方式,延長系統電力時間 適當地調整所運用的指令 程式空間最佳化 受限於有限的經費或是硬體容量,而盡量減少佔用的記憶體空間 改善方式 改善程式的風格 節省指令所佔用的空間 把程式壓縮起來,等到要執行的時候才將部分欲執行的程式碼解開執行 快取基礎指令解壓縮 程式測試 在設計與實作之後,一定要經過測試的階段,來找出系統可能潛藏的臭蟲 (bug) 測試策略可以分為兩種主要方式 黑箱測試 (black-box):測試人員不需要理會待測系統內部的行為,只要產生測試案例去測試,看看結果是否正確即可。 明箱測試 (clear-box):又稱為白箱測試 (white-box),就是依據待測系統的結構來進行測試。 明箱測試 為了滿足測試需求,我們必須要先瞭解控制與資料的流程。 同時為了執行與評估這些測試,我們也必須控制程式內的變數並且觀察出計算的結果,有時候我們還需要修改程式,以便讓程式能夠進行測試。 一旦新增了修改的輸入與輸出,還必須不影響原本的功能性,所以進行這樣的測試時,瞭解程式的控制與資料流程相當重要。 測試步驟 提供一個測試程式,包含輸入部分,專門測試我們想測試的地方 執行待測程式與測試程式 觀察輸出結果,決定是否符合測試 範例9-8 控制與觀察程式 需要產生兩個超過上下臨界值的數值,這時候,就需要在buff[]與c[]這兩

文档评论(0)

sunyangbill + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档