【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 优化能更进一步提升性能。(后续有时间会做一轮)