到目前為止我們所看到的效能監視工具的原理,適用於從彙編和fortran直到ada這樣的程式語言,但是很多程式設計師現在使用更強大的語言。如何監視lisp或apl程式的計算效能?又如何監視網路或資料庫語言程式的計算效能?
我們打算用unix的管道(pipeline)作為更有趣的計算模型的例子。管道是一系列的過濾程式(filter):當資料流經每個過濾程式時,對資料施加變換。下面這個經典的管道按照頻率遞減順序列印某檔案中使用最多的25個單詞。
cat $* ¦
tr -cs a-za-z '\012' ¦
tr a-z a-z ¦
sort ¦
uniq -c ¦
sort -r –n ¦
sed 25q
當用這個管道在一本大約6萬字的書中尋找25個最常見的單詞時,我們監視這個管道的效能。輸出的前6行是:
3463 the
1855 a
1556 of
1374 to
1166 in
1104 and
...
下面是對vax-11/750上計算的「管道效能監視」:
lines words chars times
10717 59701 342233 14.4u 2.3s 18r tr -cs a-za-z \012
57652 57651 304894 11.9u 2.2s 15r tr a-z a-z
57652 57651 304894 104.9u 7.5s 123r sort
57652 57651 304894 24.5u 1.6s 27r uniq –c
4731 9461 61830 27.0u 1.6s 31r sort -rn
4731 9461 61830 0.0u 0.2s 0r sed 25q
25 50 209
左邊幾列說明每個階段的資料:行數、單詞數、字元數。右邊部分描述了資料階段之間的過濾程式:用秒表示的使用者時間、系統時間以及真實時間,後面是命令本身。
這個效能監視結果給出了程式設計師感興趣的許多資訊。這個管道是快速的,處理150頁的書只需3.5分鐘。第一次排序花了這個管道57%的執行時間,這種經過仔細調優的實用程式很難再提速了。第二次排序只花了這個管道14%的時間,但是還有調優的餘地。這個效能監視結果還發現了管道中隱藏的一處小錯誤。unix高手們會樂於找出引入空行的地方。
這個效能監視結果也透露了檔案中單詞的資訊:共有57 651個單詞,但只有4731個不同的單詞。在第乙個翻譯程式之後,每個單詞有4.3個字母。輸出表明,最常見的單詞是「the」,佔了檔案的6%。6個最常見的單詞佔了檔案的18%。對英語中最常見的100個單詞做專門處理也許還能提高速度。試試看從這些計數中找出其他有趣的表面規律。
跟許多unix使用者一樣,我過去也用手工監視管道的效能,利用單詞計數(wc)命令來統計檔案,用time命令來統計程序。「管道效能監視工具」讓這個任務自動化了。用管道和一些輸入檔案的名稱作為輸入,產生效能監視結果作為輸出。2個小時和50行**就足以建立這個效能監視工具。下一節詳細闡述這個話題。
VS2010效能監視工具
程式設計珠璣 續 第一章中就介紹了效能監視工具,對於較簡單的程式來說,效能監視工具其實可以用變數累加來計算的,但是對於較複雜的程式來說就需要比較好的效能監視工具了。而vs2010提供了乙個效能監視工具,雖然我沒有寫過大型的程式,但是感覺還是很高大上的!效能監視工具的開啟 analyze launch...
Oracle效能監視
10g以前的監視方法,事情發生之後才去收集資訊,不能滿足實時解決問題的需求。10g版本新特性,前瞻性 實時性監測。記憶體監視器 memory monitor,簡稱mmon 記憶體監視燈 memory monitor light,簡稱mmnl 系統全域性區 system global area,簡稱s...
Mysql 監視工具
對於開發人員來說,最頭大的莫過於 你本地沒事,線上 錯誤日誌一堆。尤其是資料庫通訊那一層。sqlserver 有 sql profile 用來監視對應的server上的通訊日誌,引數 命令等資訊。mysql 還得敲一堆命令去.好吧,有一款好的跟蹤工具事半功倍。neor profile sql 用來跟...