Ho provato a profilare il mio programma C++ con gprof. Il programma stesso ha funzionato per circa 53 secondi, quindi non capisco perché dice che main ha funzionato solo per circa 8,29 secondi. Qualche spiegazione su questo?Il C++ utilizza solo il ~ 20% del tempo dice gprof
Ecco un estratto:
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]
È la misurazione del tempo di orologio da parete o del tempo di CPU effettivamente utilizzato dal processo? – csl
Hai provato a eseguire il codice tramite il comando unix 'time'? Ciò ti mostrerà tempo di orologio da muro vs. tempo di spazio dell'utente (il tuo codice) rispetto al tempo del kernel. Ti aspetti che il tuo codice sia legato all'IO o alla CPU? – Rup
@Rup: "MPQS" indica quasi certamente "Setaccio quadratico polinomiale multiplo", un algoritmo per il factoring di grandi numeri. Mi aspetto che sia * pesantemente vincolato alla CPU. –