Rust—tklog与log4rs 的基准测试


以下对Rust日志库tklog与log4rs进行基准压测

初始化:
1. tklog

   初始化

fn tklog_init() {
    LOG.set_console(false)
        .set_cutmode_by_size("tklogsize.log", 500<<20, 10, false);
}  
//写入文件 tklogsize.log , 文件分割大小500M,最大备份文件数为10。

   测试函数

fn testtklog() {
    tklog::debug!("aaaaaaaaabbbbbbbbb>>>>>>>>", 1, 2, 3, 4);
}
2. log4s

   配置文件

log4rs.yaml

refresh_rate: 30 seconds
appenders:
  requests:
    kind: rolling_file
    path: "requests.log"
    encoder:
      pattern: "{m} | {d(%Y-%m-%d %H:%M:%S%.6f)} {file} {line} {n}"

    policy:
      trigger:
        kind: size
        limit: 500mb
      roller:
        kind: fixed_window
        pattern: "requests_{}.log"
        count: 5
        base: 1  

root:
  level: debug
  appenders:
    - requests

测试函数

fn testlog4rs() {
    log::debug!("aaaaaaaaaaaaaaaa{},{},{},{}", 1, 2, 3, 4);
}


基准测试结果:

以下为部分截图:


测试结果说明

经过几十轮以上的测试

  • tklog的数据基本稳定在 3—3.9µs/op。97%以上测试都在这个范围。
  • log4rs在56.9 µs/op 左右的情况居多,  80%左右测试结果在这个范围。
  • tklog测试 最小值为 3.0 µs/op,log4rs测试最小值 4.4µs/op。
  • tklog未出现超过 4.5 µs/op的情况。
  • log4rs偶尔出现 15 µs/op以上的情况。