我有一个非常及时的程序,我想测量执行程序所需的时间。这是代码的简单示意图。
clock1=current_time();
instruction 1;
instruction 2;
.
.
.
.
instruction n;
clock2=current_time();
total time = clock2-clock1;
当我使用GCC用-O2或-O3选项编译上面的代码时,它总是在指令的中间移动clock2 = current_time()。因此给出错误的结果。 是否有任何方法可以限制gcc重新排列代码的这一部分,同时优化代码的所有其他部分? 一些要求,测量时间的例程是不可改变的。我必须使用提供的例程。 谢谢您的帮助。 问候。
更新:使用断点
clock1=0;clock2=0;
clock1=current_time();
breakpoint 1 : instruction 1; // clock1=<value> clock2=0
instruction 2;
.
.
.
.
breakpoint 2 : instruction n;// clock1=<value> clock2=<value>
clock2=current_time();
total time = clock2-clock1;
breakpoint 3:// clock1=<value> clock2=<value> total time=clock2-clock1;