Tôi đã thử lược tả chương trình C++ của mình bằng gprof. Chương trình tự chạy trong khoảng 53 giây, vì vậy tôi không hiểu tại sao nó nói, chính chỉ chạy trong khoảng 8,29 giây. Bất kỳ lời giải thích về điều này?C++ chính chỉ sử dụng ~ 20% thời gian nói gprof
Dưới đây là một đoạn trích:
kết quảindex % time self children called name
<spontaneous>
[2] 20.5 0.00 8.29 main [2]
0.00 8.28 1/1 MPQS::start(std::basic_ofstream<char, std::char_traits<char> >&) [3]
0.00 0.01 1/1 MPQS::MPQS(NTL::ZZ, long) [36]
0.00 0.00 1/1 MPQS::~MPQS() [78]
-----------------------------------------------
0.00 8.28 1/1 main [2]
[3] 20.5 0.00 8.28 1 MPQS::start(std::basic_ofstream<char, std::char_traits<char> >&) [3]
7.15 1.08 801/801 MPQS::sieve() [4]
0.00 0.04 801/801 MPQS::find_smooth_vals() [23]
0.01 0.00 1/1 MPQS::try_solutions(NTL::mat_GF2&) [35]
0.00 0.00 801/801 MPQS::compute_coeffecients() [59]
-----------------------------------------------
7.15 1.08 801/801 MPQS::start(std::basic_ofstream<char, std::char_traits<char> >&) [3]
[4] 20.4 7.15 1.08 801 MPQS::sieve() [4]
1.08 0.00 801/801 MPQS::find_candidates() [9]
Có phải đo thời gian đồng hồ treo tường hoặc thời gian CPU tích lũy thực tế được sử dụng bởi quy trình của bạn không? – csl
Bạn đã thử chạy mã của mình thông qua lệnh unix 'time' chưa? Điều đó sẽ cho bạn thấy thời gian đồng hồ treo tường so với thời gian không gian người dùng (mã của bạn) so với thời gian hạt nhân. Bạn có mong đợi mã của bạn được IO ràng buộc hoặc CPU bị ràng buộc? – Rup
@Rup: "MPQS" gần như chắc chắn là viết tắt của "Đa đa thức bậc hai sàng", một thuật toán cho bao thanh toán số lượng lớn. Tôi hy vọng nó sẽ được * rất nhiều * CPU bị ràng buộc. –