GetTickCount()和clock()函数计时哪个更准确些!

payne 2001-07-19 08:38:46
我在用GetTickCount()和clock()函数测试同一段代码所执行的时间长度时,发现前者为
2ms,而用后者测试为9ms,并且用同一函数在不同时间测试时得出的结果相差甚远。有没有什么好方法解决一下。是不是只有求助硬件了,可我在C++Builder下访问不到8253呀!
...全文
978 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
alanwang 2001-07-19
  • 打赏
  • 举报
回复
用这个吧,包你满意,我已测试过。
利用计算机中的8253,8254可编程时间间隔定时器芯片实现的。在计算机内部有三个独立的16位计数器。计数器可以以二进制或二—十进制(BDC)计数。计数器每秒产生1193180次脉冲,每次脉冲使计数器的数字减一,产生频率是可变的,用QueryPerformanceFrequency可以得到,一般情况下都是 1193180。QueryPerformanceCounter可以得到当前的计数器值。所以只要你的计算机够快, 理论上精度可以达到1/1193180秒。

QueryPerformanceFrequency(&litmp); // 获得计数器的时钟频率
dfFreq=(double)litmp.QuadPart;

// 延迟 MilliSecond 毫秒 ,大于x毫秒而与之最接近的毫秒数,精度预计0.02ms以上
void __fastcall TMainForm1::QuerySleep(float MilliSecond)
{
QueryPerformanceCounter(&litmp); // 获得初始值
QPart1=litmp.QuadPart;
do
{
QueryPerformanceCounter(&litmp); // 获得终止值
QPart2=litmp.QuadPart;

dfMinus=(double)(QPart2-QPart1);
dfTim=dfMinus/dfFreq; // 时间差
}while(dfTim<(MilliSecond/1000));
}
yphy 2001-07-19
  • 打赏
  • 举报
回复
当然是GetTickCount()更精确,因为它是多媒体时间,其实还有更精确的是timeGetTime()

yphy
内容概要:本文系统梳理了多个科研领域的前沿研究与技术实现,重点涵盖FDTD方法中的完美匹配层(PML)研究,以及Matlab/Simulink在电磁、电力、控制、通信、信号处理、图像处理、路径规划、能源系统优化等领域的仿真与算法实现。文中列举了大量基于Matlab和Python的科研案例,如风电功率预测、负荷预测、无人机三维路径规划、电池系统故障诊断、雷达模拟、通信编码、微电网优化调度等,并强调结合智能优化算法(如粒子群、遗传算法、深度学习等)提升系统性能。同时,提供了丰富的代码资源与仿真模型,涵盖永磁同步电机控制、逆变器设计、多智能体任务分配、虚拟电厂调度等复杂系统,助力科研人员快速开展复现实验与创新研究。; 适合人群:具备一定编程基础,熟悉Matlab/Python工具,从事电气工程、自动化、通信、人工智能、新能源、控制科学等相关领域研究的研发人员及研究生。; 使用场景及目标:① 学习并实现FDTD仿真中的PML边界条件以有效抑制数值反射;② 掌握Matlab/Simulink在多物理场建模、控制系统设计与优化算法中的综合应用;③ 借助提供的代码资源完成科研复现、课程设计、竞赛项目或工程原型开发; 阅读建议:此资源以科研实战为导向,不仅提供理论方法,强调代码实现与仿真验证。建议读者结合自身研究方向,按目录顺序查阅相关模块,下载配套代码进行调试与二次开发,以达到学以致用、融会贯通的目的。

13,874

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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