数据结构 算法与应用C 语言描述第六章,数据结构算法与应用-C语言描述002.pdf
下載
下載
第2 章 程 序 性 能
以下是本章中所介紹的有關程序性能分析與測量的概念:
? 確定一個程序對內存及時間的需求。
? 使用操作數和執行步數來測量一個程序的時間需求。
? 采用漸進符號描述復雜性,如 O、 、 、o 。
? 利用計時函數測量一個程序的實際運行時間。
除了上述概念以外,本章還給出了許多應用代碼,在后續章節中將可以看到,這些代碼有
很多用處。這些應用包括:
? 在一個數組中搜索具有指定特征的元素。本章中所使用的方法是順序搜索和折半搜索。
? 對數組元素進行排序。本章給出了計數排序、選擇排序、冒泡排序及插入排序的實現
代碼。
? 采用Horner 法則計算一個多項式。
? 執行矩陣運算,如矩陣加、矩陣轉置和矩陣乘。
2.1 引言
所謂程序性能( program performance ),是指運行一個程序所需要的內存大小和時間。
可以采用兩種方法來確定一個程序的性能,一個是分析的方法,一個是實驗的方法。在進行
性能分析( performance analysis )時,采用分析的方法,而在進行性能測量( p e r f o r m a n c e
m e a s u r e m e n t )時,借助于實驗的方法。
程序的空間復雜性(space complexity )是指運行完一個程序所需要的內存大小。對一個程
序的空間復雜性感興趣的主要原因如下:
? 如果程序將要運行在一個多用戶計算機系統中,可能需要指明分配給該程序的內存大小。
? 對任何一個計算機系統,想提前知道是否有足夠可用的內存來運行該程序。
? 一個問題可能有若干個內存需求各不相同的解決方案。比如,對于你的計算機來說,某
個C + +編譯器僅需要 1 M B的空間,而另一個C + +編譯器可能需要4 M B 的空間。如果你的計算機
中內存少于4 M B ,你只能選擇1 M B的編譯器。如果較小編譯器的性能比得上較大的編譯器,即
使用戶的計算機中有額外的內存,也寧愿使用較小的編譯器。
? 可以利用空間復雜性來估算一個程序所能解決的問題的最大規模。例如,有一個電路模
擬程序,用它模擬一個有 c個元件、w個連線的電路需要 2 8 0 K + 1 0 * (c+w )字節的內存。如果
可利用的內存總量為6 4 0 K字節,那么最大可以模擬c+w ≤3 6 K 的電路。
程序的時間復雜性(time complexity )是指運行完該程序所需要的時間。對一個程序的時
間復雜性感興趣的主要原因如下:
? 有些計算機需要用戶提供程序運行時間的上限,一旦達到這個上限,程序將被強制結束。
一種簡易的辦法是簡單地指定時間上限為幾千年。然而這種辦法可能會造成嚴重的財政問題,
因為如果由于數據問題導致你的程序進入一個死循環,你可能需要為你所使用的機時付出巨額
資金。因此我們希望能提供一個稍大于所期望運行時間的時間上限。
第2章 程 序 性 能 3 1
下載
? 正在開發的程序可能需要提供一個滿意的實時響應。例如,所有交互式程序都必須提
供實時響應。一個需要 1分鐘才能把光標上移一頁或下移一頁的文本編輯器不可能被眾多的
用戶接受;一個電子表格程序需要花費幾分鐘才能對一個表單中的單元進行重新計值,那
么只有非常耐心的用戶才會樂意使用它;如果一個數據庫管理系統在對一個關系進行排序
時,用戶可以有時間去喝兩杯咖啡,那么它也很難被用戶接受。為交互式應用所設計的程
序必須提供滿意的實時響應。根據程序或程序模塊的時間復雜性,可以決定其響應時間是
否可以接受,如果不能接受,要么重新設計正在使用的算法,要么為用戶提供一臺更快的
計算機。
? 如果有多種可選的方案來解決一個問題,那么具體決定采用哪一個主要基于這些方案之
間的性能差異。對于各種解決方案的時間及空間復雜性將采用加權的方式進行評價。
練習
1. 給出兩種以上的原因說明為什么程序分析員對程序的空間復雜性感興趣?
2. 給出兩種以上的原因說明為什么程序分析員對程序的時間復雜
總結
以上是生活随笔為你收集整理的数据结构 算法与应用C 语言描述第六章,数据结构算法与应用-C语言描述002.pdf的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言知道算法写不出代码,这个代码怎么写
- 下一篇: c语言如何不产生僵尸进程,第三章 九析带