相关疑难解决方法(0)

定时器功能使用C++以纳秒为单位提供时间

我希望计算API返回值所花费的时间.这种行动所花费的时间是纳秒秒.由于API是C++类/函数,我使用timer.h来计算相同的:

  #include <ctime>
  #include <cstdio>

  using namespace std;

  int main(int argc, char** argv) {

      clock_t start;
      double diff;
      start = clock();
      diff = ( std::clock() - start ) / (double)CLOCKS_PER_SEC;
      cout<<"printf: "<< diff <<'\n';

      return 0;
  }
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了以秒为单位的时间.如何在毫秒秒内获得相同的精度?

c c++ timer

101
推荐指数
8
解决办法
20万
查看次数

C++在Linux上获得毫秒时间 - clock()似乎无法正常工作

在Windows上,clock()以毫秒为单位返回时间,但是在我正在处理的这个Linux机器上,它将它舍入到最接近的1000,因此精度仅为"秒"级别而不是毫秒级别.

我找到了一个使用QTime该类的Qt解决方案,实例化一个对象并调用start()它然后调用elapsed()以获得经过的毫秒数.

我有点幸运,因为我开始使用Qt,但我想要一个不依赖第三方库的解决方案,

有没有标准的方法来做到这一点?

UPDATE

请不要推荐Boost ..

如果Boost和Qt可以做到这一点,那肯定不是魔术,必须有他们正在使用的标准!

c++ timer clock

100
推荐指数
6
解决办法
26万
查看次数

C++跨平台高分辨率计时器

我想在C++中实现一个简单的计时器机制.该代码应该适用于Windows和Linux.分辨率应尽可能精确(至少精确到毫秒).这将用于简单地跟踪时间的流逝,而不是实现任何类型的事件驱动设计.完成此任务的最佳工具是什么?

c++ cross-platform timer

69
推荐指数
6
解决办法
7万
查看次数

在OSX上,Windows的QueryPerformanceCounter相当于什么?

我正在将一个库从Windows移植到*NIX(目前是OSX),现在有人可以使用什么功能代替Microsoft的QueryPerformanceCounter和QueryPerformanceFrequency?

c c++ unix windows porting

27
推荐指数
3
解决办法
3万
查看次数

将clock_gettime移植到窗口

我在qnx momemntics上运行以下代码.

#define BILLION 1000000000L;

struct timespec start_time;
struct timespec stop_time; 

void start MyTestFunc() {
    //Initialize the Test Start time
     clock_gettime(CLOCK_REALTIME,&start_time)
    // ... additonal code.

    cout << "The exectuion time of func "<< calculateExecutionTime();
}


double calculateExecutionTime ()
{

    clock_gettime(CLOCK_REALTIME,&stop_time);

    double dSeconds = (stop_time.tv_sec - start_time.tv_sec);

    double dNanoSeconds = (double)( stop_time.tv_nsec - start_time.tv_nsec ) / BILLION;

    return dSeconds + dNanoSeconds;
}
Run Code Online (Sandbox Code Playgroud)

现在我想将代码移植到Windows上.任何人都可以提供示例代码.

谢谢!

c c++ windows

19
推荐指数
4
解决办法
4万
查看次数

高分辨率时序部分代码

我想测量循环中函数的速度.但是为什么我这样做的方式总是打印"0"而不是9位十进制精度(即纳秒/微秒)的高分辨率时序?

这样做的正确方法是什么?

#include <iomanip>
#include <iostream>
#include <time.h>
int main() {


 for (int i = 0; i <100; i++) {
    std::clock_t startTime = std::clock(); 
    // a very fast function in the middle
    cout << "Time: " << setprecision(9) << (clock() - startTime + 0.00)/CLOCKS_PER_SEC << endl;
 }

 return 0;
}
Run Code Online (Sandbox Code Playgroud)

相关问题:

c++ time high-resolution

7
推荐指数
1
解决办法
5132
查看次数

time.h中的clock()精度

我试图计算一个函数用来运行的滴答数,并使用这样的clock()函数来计算:

unsigned long time = clock();
myfunction();
unsigned long time2 = clock() - time;
printf("time elapsed : %lu",time2);
Run Code Online (Sandbox Code Playgroud)

但问题是它返回的值是10000的倍数,我认为是CLOCK_PER_SECOND.是否存在更精确的方法或等效函数值?

我使用的是64位Ubuntu,但如果该解决方案可以在Windows和Mac OS等其他系统上运行,我更愿意.

c linux time clock

7
推荐指数
1
解决办法
2万
查看次数

C如何正确测量时间?

这是"算法",但是当我想测量执行时间时,它给我零.为什么?

#define ARRAY_SIZE 10000
...

clock_t start, end;

start = clock();

for( i = 0; i < ARRAY_SIZE; i++) 
{
non_parallel[i] = vec[i] * vec[i];
}
end = clock();
printf( "Number of seconds: %f\n", (end-start)/(double)CLOCKS_PER_SEC );
Run Code Online (Sandbox Code Playgroud)

那么我该怎么做来衡量时间呢?

c algorithm performance time measurement

6
推荐指数
2
解决办法
1万
查看次数

为什么clock()返回1.84467e + 13?

我正在尝试用C++编写的代码.我有一个内部和外部循环,我想分开时间,但同时.由于某种原因,当我这样做时,其中一个实例返回1.84467e + 13并且总是这个确切的数字.

为什么会这样?

这是一个在我的机器上复制效果的最小工作示例:

#include <iostream>
#include <stdlib.h>
#include <time.h>

using namespace std;

int main()
{
    long int i, j;
    clock_t start, finish, tick, tock;
    double a = 0.0;
    double adding_time, runtime;

    start = clock();
    for(i=0; i<10; i++)
    {
        a=0.0;
        tick =clock();
        for(j=0; j<10000000; j++)
        {
            a+=1;
        }
        tock= clock();
        adding_time = (double)(tick - tock)/CLOCKS_PER_SEC;
        cout << "Computation time:" << adding_time << endl;

    }
    finish = clock();
    runtime = (double)(finish - start)/CLOCKS_PER_SEC;
    cout << "Total computation time:" << runtime …
Run Code Online (Sandbox Code Playgroud)

c++ timing clock

5
推荐指数
1
解决办法
279
查看次数

C/C++ - 如何管理视频游戏中的循环?

我已经用C(小型个人项目)制作了一些视频游戏.而我每次遇到的问题都是一样的,如何管理游戏中的周期.

例如,我用SFML编写了一条蛇.我使用帧速率处理周期:正常情况下5帧速率,并且通电后,我将其更改为10.这是有效的.但它很可怕.并且它对于坏的计算机无法正常工作.同样的想法,我也做了一个游戏,我决定一个循环等于一个循环的转弯(有一个无限循环).同样的问题,高性能计算机将比低速计算机快.

所以,有人可以建议我如何在视频游戏中正确和正确地进行周期管理.

提前致谢 !

c c++ 2d-games

4
推荐指数
2
解决办法
480
查看次数

测量一组指令的确切时间(周期数)

我的驱动器上有一些扇区读数很差.我可以衡量每个部门所需的阅读时间,然后比较好部门和坏部门的时间.

我可以使用处理器的计时器进行测量.如何在C/Assembly中编写程序来衡量每个扇区读取的确切时间?

所以程序将是这样的:

Start the timer
Read the disk sector
Stop the timer
Read the time measured by the timer
Run Code Online (Sandbox Code Playgroud)

c assembly latency

2
推荐指数
1
解决办法
6060
查看次数

如何在C++中计时事件?

我希望能够获得在我的C++程序中执行某些操作所需的纳秒数.

对象创建,函数执行它的时间等等.

Java,我们做的事情是这样的:

    long now = System.currentTimeMillis();
    // stuff
    long diff = (System.currentTimeMillis() - now);
Run Code Online (Sandbox Code Playgroud)

你会如何在C++中做同样的事情?

c++

2
推荐指数
1
解决办法
6483
查看次数