Chúng tôi sử dụng g ++ 4.2.4 và tôi đang cố gắng theo dõi một số vấn đề về hiệu suất trong mã của mình.Chức năng __tcf_0 là gì? (Xem khi sử dụng gprof và g ++)
Tôi đang chạy gprof để tạo hồ sơ cá nhân, và tôi nhận được sau "lạ" trong đó các chức năng đắt nhất là __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
Chức năng này sau đó xuất hiện để gọi hầu hết người dùng của tôi các hàm (nghĩa là nó được gọi từ chính). Lời giải thích gần nhất mà tôi tìm thấy cho điều này là here, nhưng liên kết đó đề cập đến các đối tượng tĩnh và ngoại tuyến, và tôi không nghĩ rằng điều này áp dụng trong trường hợp của tôi.
Nếu nó hữu ích, tôi đang sử dụng Boost (program_options và fusion) và thư viện HDF5.
UPDATE:
Lệnh tôi sử dụng khi xây dựng là:
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
Tôi đã thêm lệnh xây dựng mà chúng tôi sử dụng cho câu hỏi. Chúng tôi có một hệ thống xây dựng khá linh hoạt và điều này đang sử dụng cấu hình "gprof" đặc biệt mà tôi đã sử dụng với thành công trong quá khứ. Vì vậy, về nguyên tắc tôi * nghĩ * Tôi có tất cả các thiết lập cần thiết. –
Cả hai câu trả lời khá nhiều đều đúng - nhưng đại diện có lẽ hữu ích hơn cho bạn. –