效能評估與效能剖析
每次呼叫在20 ns內完成的函式f被呼叫數百萬次。以在函式入口與出口插入記錄處理的檢測(instrumentation)式剖析器來量測。若每次呼叫的記錄處理合計需60 ns,且這些時間全部被計入f的時間,量測到的f的時間會是原本的幾倍?
- A3倍
- B4倍
- C不變(1倍)
查看答案與解析
正確答案:B. 4倍
量測到的f每次呼叫的時間,是原本的20 ns加上記錄的60 ns,成為80 ns,80÷20 = 4倍。像這樣量測用的機制改變了想量測之對象本身行為的現象,稱為探針效應(Probe effect)。記錄處理也會替換快取的內容,因此實際上可能會更慢。小函式很多的程式,可用取樣式量測時間的比例,或將量測本身的負擔扣除後再判斷。
- A. 這是誤用了將記錄的60 ns除以原本20 ns所得的值(60÷20 = 3)。
- B. 正確。(20+60)÷20 = 4倍。
- C. 記錄處理也需要時間,因此量測到的時間會變長。