我向來相信 managed code 可以讓 programmer 把事情做的更快更好,但這一切美好事物的背後是要付出其他代價的,因此這次去 PDC 特別挑了 Rico Mariani 主講的兩個 session 來聽:
- FUNL04 Tips & Tricks: Writing Performant Managed Code
- FUNL05 Tips & Tricks: Common Memory Management Pitfalls and Profiling for Managed Applications
如果你問 Rico “在開始 performance tuning 之前,最重要的三件準備工作是什麼?",他的答案肯定是 “measure, measure, measure”。這幾乎是每個專家、每本書都會跟你強調的重點,但是很多 programmer 卻總是喜歡憑自己的直覺判斷來決定怎麼做,似乎他們就是刻意或者下意識地忘掉這件事,為什麼?因為 measure 實在是件麻煩事,有時甚至不可能做到。相反地,如果有一些工具程式的輔助,measure & performance tuning 可以是件頗有趣的事。除此之外,因為 managed code 有 metadata 可以輔助這些工具的分析,做起來其實比 native code 的 tuning 容易多了。
這兩場 session 都蠻短的,Rico 並沒有足夠的時間能夠用實際的例子 demo 怎麼使用這些工具並分析其結果,所以我就拿自己寫的一些程式來練習使用 vadump 及 SOS,我向來認為花點時間熟悉這些基本的工具使用可以在將來幫你省下更多的時間。
Rico 已經將他的文章整理在 Channel9。你也可以參考 Mike Taulty 的《More on debugging with SOS.DLL》或是 John Robbins 的《Mini Dump Snapshots and the New SOS》。