【VictoriaMetrics】一个小优化:循环改查表,性能提升56.48 倍

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!


做了一个 vm-storage 数据文件 merge 的工具。测试的时候发现 decimal.CalibrateScale() 这个函数特别慢。
做了一个小优化,用查表法代替循环的乘法,性能提升明显。
Benchmark 测试:

  • 优化前:49633 ns/op
  • 优化后:9146 ns/op

通过 180mb 的数据文件来测试,profile 也显示效果明显:

  • 优化前:

  • 优化后:

代码已经 pull request 到 VictoriaMetrics 的 github, 请看:https://github.com/VictoriaMetrics/VictoriaMetrics/pull/5672

几点感受:
1.vm 目前的性能已经非常优异,如果再深入的优化一轮,性能还可以继续提升一大截;
2.作为服务器软件,空间换时间是经典手段,特别是这种数据量特别大的情况;
3.对于当前这个对很大数组进行计算的场景,采用 simd 优化能更进一步提升性能。(后续有时间会做一轮)

posted on 2024-01-24 15:44  ahfuzhang  阅读(196)  评论(0编辑  收藏  举报