C 應用系列 利用裝飾器模式進行執行時間測試

2021-08-21 05:33:08 字數 865 閱讀 7553

在平常做實驗時,經常會遇到需要測試某個函式或個模組的執行時長,基本上每次都是在模組前後新增測時間的函式,然後輸出檢視,這樣的工作相當繁瑣,然而每次測試還是這樣做的。

今天上網看到aop相關,發現可以用aop新增測時間功能。

又看到了**模式和裝飾器模式,發現應用裝飾器模式似乎可以簡單實現。

class vbase

virtual

void do_test() = 0;

};class timetest:public vbase

~timetest()

virtual

void do_test() override

private:

vbase *m_ptr;

};class class_to_test:public vbase

};int main()

測試時間則使用timetest類,如果需要其他功能則可以另外建立類,繼承於vbase,同時智慧型指標引數為該類。

輸出:

begin the function…

end the function…

cost time(ms): 1000

略微有點搞不清裝飾器模式、**模式、aop之間的差別。

個人理解是:

裝飾器模式:給某乙個類增加功能,不改變原有類,需要新功能了才利用裝飾類去裝飾,重點在於能夠不改變原類功能而獲得新功能。使用時使用者將被裝飾類作為引數傳入給裝飾器。

**模式:訪問類時增加控制許可權,為原類服務的,重點在於原類。使用時,將使用者與原類隔離,使用者直接訪問**類,並不知道原類的細節。

aop:面向切面程式設計,是否可以理解為,**模式是aop的一種簡單實現?

python利用裝飾器進行執行耗時分析

執行環境 python 3.7.0。特設定了debug模式,便於開啟和關閉耗時分析功能。import time debug 0 在需要分析時效性的時候將該量置為1,否則置為0 def print func time function 計算程式執行時間 param function return de...

c 設計模式 裝飾器模式

裝飾器和被裝飾的物件必須有完全一致的方法名。只是在裝飾器的方法中會呼叫被裝飾物件的同名方法 如果裝飾器和被裝飾的物件方法名不一致,那麼將導致裝飾之後的結果不能再次被另外乙個裝飾器裝飾 因為方法名已經變了 base class 裝飾器模式的基類,被裝飾物件 元件和裝飾器模板都需要繼承自基類 class...

C 設計模式 裝飾器模式

裝飾器模式,顧名思義就是對乙個主體進行修飾。原理就是用乙個新的類去包含乙個舊的類,在新的類中先呼叫舊的類的方法,再呼叫新的類中新新增的方法。這樣就實現了鏈式呼叫。然後可以不斷的新增新的修飾類去修飾。為了能使新的類 裝飾類 能夠包含舊的類 主體類或者已經經過修飾的修飾類 就需要統一基類,所以不論是主體...