sol_parser_sdk/logs/
perf_hints.rs

1//! 性能优化提示和内联函数
2
3/// likely - 告诉编译器条件大概率为真
4#[inline(always)]
5pub fn likely(condition: bool) -> bool {
6    #[cold]
7    fn cold() {}
8
9    if !condition {
10        cold();
11    }
12    condition
13}
14
15/// unlikely - 告诉编译器条件大概率为假
16#[inline(always)]
17pub fn unlikely(condition: bool) -> bool {
18    #[cold]
19    fn cold() {}
20
21    if condition {
22        cold();
23    }
24    condition
25}
26
27/// 预取数据到 CPU 缓存(读优化)
28#[inline(always)]
29pub unsafe fn prefetch_read<T>(ptr: *const T) {
30    #[cfg(target_arch = "x86_64")]
31    {
32        use std::arch::x86_64::{_mm_prefetch, _MM_HINT_T0};
33        _mm_prefetch(ptr as *const i8, _MM_HINT_T0);
34    }
35}
36
37/// 预取数据到 CPU 缓存(写优化)
38#[inline(always)]
39pub unsafe fn prefetch_write<T>(ptr: *const T) {
40    #[cfg(target_arch = "x86_64")]
41    {
42        use std::arch::x86_64::{_mm_prefetch, _MM_HINT_T1};
43        _mm_prefetch(ptr as *const i8, _MM_HINT_T1);
44    }
45}