只需一步,快速开始
您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们
使用道具 举报
tlwh163 发表于 2024-2-26 12:14 谢谢! 那只好作死跑循环 测试下哪个快。。。 哈哈
AyalaRs 发表于 2024-2-26 17:06 计算指令执行速度用rdtsc,执行速度分首次执行和循环执行,两者是有差别的 ...
DWORD_PTR SetThreadAffinityMask( [in] HANDLE hThread, [in] DWORD_PTR dwThreadAffinityMask );
tlwh163 发表于 2024-2-27 19:03 ASM rdtsc push eax
要先序列化流水线(比如用mfence指令),确保流水线上没有别的指令在执行。 然后rdtsc取开始的tsc,再用rdtscp取结束的tsc。 这是因为rdtsc是直接在rdtsc开始时读取tsc,而rdtscp是等到流水线上在它之前的所有指令完成后才读取tsc。 此外还有考虑供电问题,部分处理器会在低频甚至停转的时候仍然以原速率(即Tsc-Invariant)增加TSC。 更不用提不同处理器拥有不同设计的流水线了。 就算尽可能排除干扰项,它也还只能是测个大概,别太纠结。
mfence
rdtsc
rdtscp
tangptr@126.com 发表于 2024-2-27 23:49 [md] 要先序列化流水线(比如用`mfence`指令),确保流水线上没有别的指令在执行。 然后`rdtsc`取开始的t ...
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图
GMT+8, 2025-4-1 11:57 , Processed in 0.031636 second(s), 22 queries , Gzip On.
Powered by Discuz! X3.5
© 2001-2025 Discuz! Team.