Calculating execution time in c++
Difference between en3 and en4, changed 12 character(s)
Hi Codeforces. Today i saw [user:GreenGrape,2018-02-09] solution of the problem [D. Robot Vacuum Cleaner](http://codeforces.com/problemset/problem/922/D) : [submission: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
: time : %.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: [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)