melange_db 0.2.8

基于 sled 架构深度优化的下一代高性能嵌入式数据库,支持 ARM64 NEON SIMD 优化、多级缓存和布隆过滤器
Documentation
//! 高性能日志模块
//!
//! 使用rat_logger日志库,由调用者负责初始化
//! 库本身不进行日志初始化,保持配置灵活性

/// 调试级别日志 - 仅在debug模式下编译
#[macro_export]
macro_rules! debug_log {
    ($($arg:tt)*) => {
        #[cfg(debug_assertions)]
        rat_logger::debug!($($arg)*);

        #[cfg(not(debug_assertions))]
        {
            // release模式下完全零成本
        }
    };
}

/// 追踪级别日志 - 仅在debug模式下编译
#[macro_export]
macro_rules! trace_log {
    ($($arg:tt)*) => {
        #[cfg(debug_assertions)]
        rat_logger::trace!($($arg)*);
    };
}

/// 信息级别日志 - 轻量级,仅在必要时使用
#[macro_export]
macro_rules! info_log {
    ($($arg:tt)*) => {
        #[cfg(debug_assertions)]
        rat_logger::info!($($arg)*);
    };
}

/// 警告级别日志 - 始终保留但优化
#[macro_export]
macro_rules! warn_log {
    ($($arg:tt)*) => {
        rat_logger::warn!($($arg)*);
    };
}

/// 错误级别日志 - 始终保留
#[macro_export]
macro_rules! error_log {
    ($($arg:tt)*) => {
        rat_logger::error!($($arg)*);
    };
}

/// 性能关键路径的零成本日志
/// 使用条件编译确保在release模式下完全无开销
#[macro_export]
macro_rules! perf_trace {
    ($($arg:tt)*) => {
        #[cfg(all(debug_assertions, feature = "perf-trace"))]
        {
            use std::time::Instant;
            static _COUNTER: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0);
            let start = Instant::now();
            let result = { $($arg)* };
            let elapsed = start.elapsed();
            let count = _COUNTER.fetch_add(1, std::sync::atomic::Ordering::Relaxed);
            if count % 1000 == 0 {
                debug_log!("perf_trace: operation took {:?}", elapsed);
            }
            result
        }
        #[cfg(not(all(debug_assertions, feature = "perf-trace")))]
        { $($arg)* }
    };
}