后端程序员一定要看的语言大比拼:Java vs. Go vs. Rust

本文对比了Java、Go和Rust在编写Web服务时的性能,包括可执行文件大小、内存使用、CPU使用、运行时需求等方面。结果显示,Java在空闲时内存占用显著高于Go和Rust,而Go和Rust在CPU使用和内存管理上表现更优。在处理请求的速度上,Rust优于Go,Go优于Java。Go的编译速度快,Rust的学习曲线较陡峭,但提供了更安全的内存管理。在资源效率方面,Rust和Go展现出了对Java的竞争优势。
摘要由CSDN通过智能技术生成

后端程序员一定要看的语言大比拼:Java vs. Go vs. Rust

 

这是Java,Go和Rust之间的比较。这不是基准测试,更多是对可执行文件大小、内存使用率、CPU使用率、运行时要求等的比较,当然还有一个小的基准测试,可以看到每秒处理的请求数量,我将尝试对这些数字进行有意义的解读。

为了尝试将苹果与苹果进行比较(也许是?),我在此比较中使用每种语言编写了一个Web服务。Web服务非常简单,它提供了三个REST服务端点(endpoint)。

后端程序员一定要看的语言大比拼:Java vs. Go vs. Rust

 

Web服务提供的服务端点

这三个Web服务的代码仓库托管在github上。

编译后的二进制文件尺寸

有关如何构建二进制文件的一些信息。对于Java,我使用maven-shade-plugin和mvn package命令将所有内容构建到一个大的jar中。对于Go,我使用go build。最后,我使用了cargo build --release构建Rust服务的二进制文件。

后端程序员一定要看的语言大比拼:Java vs. Go vs. Rust

 

每个程序的大小(以兆字节为单位)

编译后的文件大小还取决于所选的库/依赖项,因此,如果依赖项的身躯臃肿,则编译后的程序也将难以幸免。在我的特定情况下,针对我选择的特定库,以上是程序编译后的大小。

在后续的一个单独小节中,我会把这三个程序都构建并打包为docker镜像,并列出它们的大小,以显示每种语言所需的运行时开销。下面有更多详细信息。

内存使用情况

空闲状态

后端程序员一定要看的语言大比拼:Java vs. Go vs. Rust

 

每个应用程序在内存空闲时的内存使用情况

什么?Go和Rust版本显示空闲时内存占用量的条形图在哪里?好了,它们在那里,只有JVM启动的程序在空闲状态时消耗160 MB以上的内存,它什么也没做。Go应用程序仅使用0.86 MB,Rust应用也仅使用了0.36 MB。这是一个巨大的差异!在这里,Java使用的内存比Go和Rust应用使用的内存高

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值