我想要计算我编写的一些C ++函数的实时性能。如何以毫秒为单位获得时间?
我知道如何通过
在几秒钟内获得时间start=clock()
diff=(clock()-start)/(double) CLOCKS_PER_SEC
cout<<diff
我正在使用Ubuntu-Linux OS和g ++编译器。
答案 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