Calculating execution time in c++

Revision en3, by yhtyyar.s, 2018-02-09 17:54:03

Hi Codeforces. Today i saw GreenGrape solution of the problem D. Robot Vacuum Cleaner : 35053688. And i find there :

#define debug(...) fprintf(stderr, __VA_ARGS__), fflush(stderr)

while (t--) {
		clock_t z = clock();
		solve();
		debug("Total Time: %.3f\n", (double)(clock() - z) / CLOCKS_PER_SEC);
	}

With this code he gets execution time of function solve(). clock() gives you current time. It is useful to avoid time limits. I have wrote helpful macro and decided to share with you :

#define debug(...) fprintf(stderr, __VA_ARGS__), fflush(stderr)
           
#define time__(d) for(long blockTime = 0; (blockTime == 0 ? (blockTime=clock()) != 0 : false); debug("%s:%.4fs", d, (double)(clock() - blockTime) / CLOCKS_PER_SEC))

with this u can get execution time of parts of your programm. Example:

int main () {
     /*reading data*/
     time__("dfs time"){
          /* dfs code */
     }
     /*some code*/
     time__("solve"){
       solve();
     }
}

And programm will print something like dfs time : 0.2650s, solve time:0.0010s. You don't need to erase debugging part when you will submit it. Example submission: 35088800. Thank you for reading and I hope it will help you

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en4 English yhtyyar.s 2018-02-09 18:01:48 12
en3 English yhtyyar.s 2018-02-09 17:54:03 147 Tiny change: 'e)(clock()-blockTime)/CLOCKS_PER' -> 'e)(clock() - blockTime) / CLOCKS_PER'
en2 English yhtyyar.s 2018-02-09 15:19:14 548 Tiny change: ': false); debug("%s' -> ': false); debug("%s' (published)
en1 English yhtyyar.s 2018-02-09 14:50:45 921 Initial revision (saved to drafts)