Spring Boot Native vs Go:性能比较 – Ignacio Suay


Spring 启动了一个名为Spring Native的新项目。该项目仍处于试验阶段,但允许您使用 GraalVM 构建本机镜像。Spring Native 提供了一些有趣的特性,包括几乎即时启动(通常小于 100 毫秒)、即时峰值性能和更低的内存消耗,但代价是比 JVM 更长的构建时间和更少的运行时优化。
在 Spring Native 发布期间,我正在学习 Go。我对 Go 感兴趣的主要原因是它的性能:Go 速度快,内存消耗低,CPU 使用率低。
我想回答的问题是:Go 性能是否明显优于 Spring Boot(特别是现在存在原生选项)?
。。。。
结论:
在 Go 中,保存一个产品和检索最后一个产品的响应时间快了 20% 左右。在检索 20 个最新产品时,Go比 Java 和 Spring Boot Native快 133%。我想知道 ORM 库(Gorm vs Hibernate)对这些结果的影响有多大,但显然Go 比 Java 和 Spring Boot Native 快得多。
在资源利用方面,Go 也是赢家。
值得注意的是,在负载测试持续的 2 个小时内,Go 应用程序的 CPU 和内存保持稳定,而 Spring Native 的内存使用量不断增加。
在我看来,Spring Native 是减少内存消耗的良好第一步。目前我仍然发现构建镜像的时间太长,尽管我希望他们会在未来的版本中改进它。 
另一方面,我对 Go 的出色表现感到惊讶。我职业生涯的大部分时间都在编写 Java 和 Spring 应用程序,所以我对 Go 世界仍然很陌生。我不认为 Go 会取代 Java,并且 Go 中缺少一些重要的特性,比如泛型(尽管 Go 团队计划很快添加它们)。尽管如此,我认为 Go 可能更适合开发微服务或函数即服务(无服务器)。