[英]What is function __tcf_0? (Seen when using gprof and g++)
我們使用g ++ 4.2.4,我試圖在我的代碼中追蹤一些性能問題。
我正在運行gprof來生成配置文件,我得到以下“奇怪”,因為最昂貴的功能是__tcf_0:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
40.00 0.04 0.04 1 40.00 95.00 __tcf_0
然后,此函數似乎調用了我的大多數用戶函數(即,它是從main調用的函數)。 我在這里找到的最接近的解釋是在這里 ,但該鏈接指的是靜態對象和atexit,我不認為這適用於我的情況。
如果它有用,我正在使用Boost(program_options和fusion)和HDF5庫。
更新:
我在構建時使用的命令是:
g++ -Wreturn-type -Wunused -Winline -pg -DLINUX -DHAS_SETENV \
-DFUSION_MAX_MAP_SIZE=15 -DFUSION_MAX_VECTOR_SIZE=15 -g -O0 \
--param large-function-growth=300 --param inline-unit-growth=200
g ++生成具有此名稱的函數。 它們調用靜態對象的析構函數,並在調用構造函數時使用atexit()進行注冊。
__tcf_0似乎確實是一個函數,它調用靜態對象的析構函數,並為每個靜態對象注冊,在exit處調用(理所當然地在本頁上說了)
現在,你的gprof的結果很奇怪,因為占用大部分時間的函數只需要0.04秒,這意味着整個程序需要0.1秒才能執行。 如果我沒弄錯的話,我的猜測是你沒有正確描述。 您是否在啟用了性能分析的情況下編譯代碼?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.