C++如何获取微秒级时间?

Vegdie 2020-11-29 06:10:21
我想测试各个排序算法的速度,毫秒级时,归并、快排、希尔等都是0ms,所以打算设置微秒级的时间控制,但是不知道怎么做。

我是这么做的:

开始时间记录
排序开始
结束时间记录
结束-开始=运算时间

各位大佬请告我一下怎么做到微秒级。

...全文
1442 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2020-12-14
  • 打赏
  • 举报
回复
使用电脑计时有时误差会很大,因为待测程序段的运行会影响电脑时钟。 将待测程序段循环足够多次,手动掐秒表计时可能更准确。
  • 打赏
  • 举报
回复
windows定时达不到微秒级别,只能到毫秒级,但是取时间是可以精确到微秒级的,准确说是0.1微秒,可以用GetSystemTimeAsFileTime
  • 打赏
  • 举报
回复
win不是实时系统,用户模式的进程定时很难达到微秒级别吧!

不过,可以排序10000次,累加起来求平均。当然注意使用准备好的10000组数据,别让动态内存分配带来误差
yshuise 2020-12-13
  • 打赏
  • 举报
回复
很简单,测试算法的时候,调用归并、快速一百万次就有时间了。
qq_40162781 2020-12-03
  • 打赏
  • 举报
回复
数据多弄点。。百度std::chrono
maguangzhi 2020-12-01
  • 打赏
  • 举报
回复
使用微软用于多媒体的定时技术试试
ctrigger 2020-11-30
  • 打赏
  • 举报
回复
结构体定义:
struct timeval {
time_t tv_sec; // seconds
long tv_usec; // microseconds
};
使用:
struct timeval tv;
gettimeofday(&tv,NULL);
Minikinfish 2020-11-30
  • 打赏
  • 举报
回复
BOOL QueryPerformanceCounter( LARGE_INTEGER* lpPerformanceCount ); lpPerformanceCount [in] Pointer to a variable that the function sets, in counts, to the current performance-counter value. If the installed hardware does not support a high-resolution performance counter, this parameter can be set to zero. TRUE indicates that a performance counter value was successfully filled in. FALSE indicates failure.
an_bachelor 2020-11-30
  • 打赏
  • 举报
回复
普通电脑的计时器没有微秒级精度(记得好像说是15毫秒左右的精度) 不怪C++语言

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧