测hashmap没什么意思,所以我又补了一个续集,有兴趣可以看看:golang的性能未必有想象中的好(续) - 知乎 (zhihu.com)

今天讨论的时候,发现了一个简单的语言benchmark测试代码。试了下Java17和go1.18,发现go的性能确实没有想像中的高。



凡事不能想当然,得多测测

代码来自 @eechen


Go的map实现是Hash Map,所以Java代码的map也改成了HashMap。两者数据就差不多了。不过HashMap在写入大量数据的时候会扩容引发内存复制,从而模糊了两者的差距。

Go

Java

一种减少扩容的方式是增大map的初始化大小。这次改成2,000,000,然后再次测试。Go的成绩好了很多。Go粉一定很满意。

Go

Java