2017-05-23 34 views
-4

我想知道我的程序在特定類的默認拷貝構造函數中花費了多少時間。有沒有一種方法可以通過與編譯器實現默認拷貝構造函數的方式相同的方式來實現拷貝構造函數,但是增加了一些檢測當前時間的檢測代碼,以便在運行主體之前和之後構造函數?如何在C++中測量默認拷貝構造函數的性能

+0

編寫您自己的拷貝構造函數並比較所需的時間和默認值。但是,如果默認的副本是正確的,我看不出自己的實現可能會更快。 –

+2

在C++ 11中,使用委託構造函數,您可以在其中添加具有工具邏輯的委託構造函數並委託給正常的拷貝構造函數。否則,只需讓編譯器正常生成默認的拷貝構造函數,然後使用外部分析器,該代碼在運行時動態地檢測代碼,而不是爲其編寫代碼。 –

+0

通常我會希望分析器能夠給你關於生成的拷貝構造函數的信息,除非拷貝構造函數被內聯。您是否正在一個傳統分析器很難來的平臺上工作? –

回答

0

使用gprof或其他分析器。您當然可以編寫自己的時序循環,但C++編譯器可以非常積極地進行優化,這會讓事情變得困難。一個合適的分析器會告訴你究竟程序在哪裏花費時間。