簡體   English   中英

什么是函數__tcf_0? (使用gprof和g ++時看到)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM