ArrayList Add() 方法的选择 #22
linkai-pro
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
感谢大明大佬 @flycash 的帮助,让我完成了本次测试
以下比较ArrayList Add方法的三种实现:
方法一:
方法二:
方法三:
来自作者 786797661 的 pr https://github.com/gotomicro/ekit/pull/21/files
benchmark测试代码:
测试运行命令:
go test -bench=BenchmarkArrayList_Add -benchmem -benchtime=100000x
go版本:go version go1.18.2 darwin/amd64
mac版本:12.4 (21F79)
benchmark测试结果:
benchmark测试结果分析:
指标说明:
初步结论:
从结果可看出方法三在每次操作的内存分配远远小于其他两种方法,也就是内存占用会更低。不过方法一在每次操作的时间上会微弱的快于方法三。
主要原因我想可能是方法二进行了更多次的切片合并和临时变量的申请等原因。
而方法三只有一次单元素的切片合并和一次切片深拷贝,并且没有方法一和方法二都用到的切片解构。
Beta Was this translation helpful? Give feedback.
All reactions