x86/x86_64 Timer --- This is a low level CPU cycle count timer. What it returns is the value held within the processor time stamp counter. This counter is incremented every CPU cycle. #### Considerations When bench marking with this crate you want to assure your CPU is set to a fixed multipler. This mean Intel Turbo Boost must be OFF. You can do this in via the bios. This crate requires Rust Nightly (as it uses `llvm_asm!` macro), you will need to enable `!#[feature(llvm_asm)]`. #### Functions ```rust fn ticks() -> u64; ``` This returns the number of CPU cycles that have passed since the last time the CPU counter has rolled over. OR Power on. #### In Depth Documentation This function step by step: ```nasm #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 ``` [Reference](http://www.felixcloutier.com/x86/RDTSC.html) ### License Consider this crate licensed under the MIT. ### x86 support This crate does implement 32bit x86 support, but it is untested.