能否提升VBA中QueryPerformanceTimer(QPC)的调用速度?
可行配置方案
1. BIOS设置调整
i7-10875H原生支持恒定速率不变TSC(Invariant TSC),符合QPC调用的硬件要求,目前耗时过高是主板默认启用了PCH上的HPET作为QPC计时源导致的:
- 重启进入技嘉AERO的BIOS进阶设置界面,找到「时钟配置」分类
- 关闭强制使用HPET作为系统基准时钟的选项
- 确认「Invariant TSC」「TSC多核同步」类选项处于启用状态,保存设置退出
2. 系统级配置强制使用TSC源
无需手动操作寄存器,Windows本身提供了官方的配置开关,仅需执行一条命令即可:
- 用管理员权限启动命令提示符(CMD)
- 执行命令:
bcdedit /set useplatformclock false - 重启设备即可生效
如果后续出现少数老旧应用计时漂移的问题,执行bcdedit /deletevalue useplatformclock即可恢复默认配置。
3. 效果验证
配置完成后QPC的调用耗时会降低到20~100纳秒区间,完全匹配RDTSC指令的执行开销,不会再出现访问主板时钟的额外延迟,同时由系统负责TSC的校准、多核心同步,不会出现手动调用RDTSC可能遇到的计时不准问题。
官方说明:QPC的调用计算开销主要由底层硬件平台决定。如果TSC寄存器作为QPC的计时基础,计算开销主要由处理器处理RDTSC指令的耗时决定。根据所用处理器的不同,该耗时从十几个CPU周期到数百个CPU周期不等。如果无法使用TSC,系统会选择其他硬件计时基准。由于这些计时基准位于主板上(例如PCI南桥或PCH芯片上),单次调用的计算开销高于TSC,根据处理器速度和其他硬件因素,通常在0.8-1.0微秒左右。该开销主要由访问主板上硬件设备的耗时决定。
内容的提问来源于stack exchange,提问作者photonblaster
相关产品推荐
相关产品推荐

