毫秒计时C ++

时间:2011-09-21 20:46:01

标签: c++ time

我想要计算我编写的一些C ++函数的实时性能。如何以毫秒为单位获得时间?

我知道如何通过

在几秒钟内获得时间
start=clock()
diff=(clock()-start)/(double) CLOCKS_PER_SEC
cout<<diff

我正在使用Ubuntu-Linux OS和g ++编译器。

3 个答案:

答案 0 :(得分:3)

尝试diff =(clock() - start)* 1000.0 / CLOCKS_PER_SEC;

这个想法是你将时钟数乘以1000,这样在得到2(秒)之前,你现在得到2000(毫秒)。

答案 1 :(得分:3)

在Linux中,请查看clock_gettime()。它基本上可以给你从任意点开始经过的时间,以纳秒为单位(对你来说应该足够好)。

请注意,它是 指定的POSIX标准,因此您可以在Unix派生系统上使用它。

答案 2 :(得分:0)

注意:

在我的戴尔桌面上,速度相当快...... ubuntu bogomips峰值为5210

时间(0)大约需要80纳秒(2.4秒内3000万次通话)

时间(0)允许我测量    clock_gettime()每次呼叫大约需要1.3微秒(3秒内220万) (我不记得每个步骤有多少纳秒)

通常,我使用以下内容,大约3秒的调用。

// ////////////////////////////////////////////////////////////////////////////        
void measuring_something_duration()                        
...            
uint64_t   start_us = dtb::get_system_microsecond();  
do_something_for_about_3_seconds()      
uint64_t test_duration_us = dtb::get_system_microsecond() - start_us;    

uint64_t test_duration_ms = test_duration_us / 1000;
...

使用这些功能

// /////////////////////////////////////////////////////////////////////////////   
uint64_t mynamespace::get_system_microsecond(void)  
{  
   uint64_t total_ns = dtb::get_system_nanosecond();   // see below   
   uint64_t ret_val = total_ns / NSPUS;     // NanoSecondsPerMicroSeconds     
   return(ret_val);   
}


// /////////////////////////////////////////////////////////////////////////////  
uint64_t mynamespace::get_system_nanosecond(void)  
{  
   //struct timespec {  __time_t tv_sec;    long int tv_nsec;  };  -- total 8 bytes  
   struct timespec ts;

   // CLOCK_REALTIME - system wide real time clock   
   int status = clock_gettime(CLOCK_REALTIME, &ts);   
   dtb_assert(0 == status);   

   // to 8 byte     from   4 byte   
   uint64_t uli_nsec = ts.tv_nsec;   
   uint64_t uli_sec  = ts.tv_sec;   

   uint64_t total_ns = uli_nsec + (uli_sec * NSPS); // nano-seconds-per-second    

   return(total_ns);   
}

请记住链接-lrt