- Notifications
You must be signed in to change notification settings - Fork2
Adds a likely! and unlikely! macros to optimize the compiler generation of if statements
License
lemonrock/likely
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
likely is a rust crate used to provide macro wrappers around the intrinsics::std::intrinsic::likely
and::std::intrinsic::unlikely
, which themselves are hints to the CPU's branch predictor.
These hints should only be used when the vast majority of cases would satisfy them. A typicaly example might be a highly unusual error condition, or an extreme value or outlier in a range. Another common scenario is dealing with return codes from common libc functions, many of which are highly unlikely to occur (egEINVAL
for many such functions).
Note that using these macro wrappers requires compiling with nightly.
To include it, add the following to yourCargo.toml
:-
[dependencies]likely ="^0.1"
In your crate'slib.rs
, add:-
`#![feature(core_intrinsics)]`...#[macro_use]externcrate likely;
fnexample(age:u8){iflikely!(age <=70){println!("Not yet entitled to this welfare benefit")}elseifunlikely!(age ==99){println!("You are entitled to a birthday card from the Queen for your next birthday")}}
The license for this project is MIT.