#amd64 #clock #low-level #ticks

no-std amd64_timer

获取CPU滴答数

4个稳定版本

使用旧版Rust 2015

1.3.0 2020年6月27日
1.2.1 2020年6月27日
1.2.0 2017年11月21日
1.0.0 2016年12月10日

#12 in #amd64

Download history 15/week @ 2024-03-12 11/week @ 2024-03-19 11/week @ 2024-03-26 29/week @ 2024-04-02 10/week @ 2024-04-09 10/week @ 2024-04-16 16/week @ 2024-04-23 10/week @ 2024-04-30 8/week @ 2024-05-07 7/week @ 2024-05-14 9/week @ 2024-05-21 9/week @ 2024-05-28 10/week @ 2024-06-04 13/week @ 2024-06-11 14/week @ 2024-06-18 13/week @ 2024-06-25

52每月下载量
2个crate中使用 (通过 firestorm-core)

MIT许可协议

10KB
201 行代码

x86/x86_64计时器

这是一个低级CPU周期计数计时器。它返回的是处理器时间戳计数器中保持的值。这个计数器每经过一个CPU周期就会增加。

注意事项

当使用这个crate进行基准测试时,您需要确保CPU已设置为固定的倍数。这意味着Intel Turbo Boost必须关闭。您可以通过BIOS进行此操作。

这个crate需要Rust Nightly (因为它使用 llvm_asm! 宏),您需要启用 !#[feature(llvm_asm)]

函数

fn ticks() -> u64;

返回自CPU计数器上次回滚以来经过的CPU周期数。或者电源开启。

深入文档

此函数的逐步说明

#Intel Syntax

ldfence		#cheapest fence on x86
		    #this prevents instruction re-ordering
		    #ensures all loads are complete
		    #on x64 this is done for you by the memory model
		    #so this fence is _free_
		    #this fence is here to prevent speculative
		    #execution of rdtsc.

rdtsc		#puts timestamp counter values into the low
		    #32bits of rdx and rax.


shl rdx, $32	#move the high section, into the high 32bits of
		        #its register

or rax, rdx	#combine bits

retq		#leave function

参考

许可协议

假设此crate的许可协议为MIT。

x86支持

这个crate实现了32位x86支持,但未经过测试。

无运行时依赖

~20KB