Go和Rust简单计算性能PK

作者:孙飞撩技术

链接:https://www.jianshu.com/p/003fc48cbf55

來源:简书

共3499字,阅读需9分钟

迁移自

CSDN:

作为Go语言的狂热粉丝最近听说了同样鼎鼎大名的现代化语言-Rust,看了介绍后,发现Rust绝对是一门非常有潜力的系统级语言,因此特抽出业余时间进行了学习。

在网上有不少关于Go和Rust的对比文章,但是从我个人的观点来看,这两个语言没有什么好对比的,因为它们的使用场景基本没有重叠之处。Go适合网络编程、软实时系统; Rust适合内存使用苛刻、无GC、超高性能的场景,因此这两门语言如果结合起来,完全是一对非常美好的CP,大家觉得呢?

当然,光说不干空把式,这里先来一个多线程下简单计算的对比。

环境简介:

macbook pro

4核8线程

16G内存

任务描述:

启动8个线程

每个线程执行500万次计算任务

统计耗时

Go

结果:

Rust

结果:

结论

这里能够看出,在使用8个线程进行简单计算时,Rust的性能是稍高于于Go的,11.5ms vs 12.9ms,并没有太大优势。因此如果不考虑gc、内存控制、泛型等因素,Go必然是第一选择,因为Go的学习曲线比Rust平缓太多了,开发效率也更高,何况Go的异步网络IO也是如此的优秀,这方面Rust还有待提高~

补充1

当线程数进一步增加时,例如10,rust和Go的对比来到了14ms vs 19ms;如果是15个线程,那就是15ms vs 24ms;20个线程,19ms vs 37ms;30个线程,26ms vs 50ms。

因此可以看出,如果是实时计算系统,那rust的吞吐量对于Go还是有一定优势的,基于线程和goroutine的调度模式还是有差别的。

补充2

20个线程,每个线程运行50亿次,rust和Go用时,16.5s vs 36秒,内存占用的话都不高,但是看得出来Go的占用一直在上升,rust的内存占用主要在线程上,计算过程中内存并不会增加,十分稳定。至于CPU,毫无疑问都是800%。

本文来自企鹅号 - Golang语言社区媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

13个不容错过的Java项目

GitHub可谓一座程序开发的大宝库,有些素材值得fork,有些则能帮助我们改进自有代码或者学习编程技能。无论如何,开发工作当中我们几乎不可能绕得开GitHub...

69710
来自专栏张善友的专栏

让应用程序与您形影相随-PortableApps.com

作为一名 IT 专业人员,您可能会经常需要从一台计算机移到另一台计算机。当您这样做时,您可能会希望能拥有一组随时可用的标准应用程序、工具和文档。满足这些需求的一...

22350
来自专栏JetpropelledSnake

RESTful源码学习笔记之RPC和 RESTful 什么区别

REST,即Representational State Transfer的缩写。翻译过来是表现层状态转换。 如果一个架构符合REST原则,就称它为RESTfu...

25110
来自专栏花叔的专栏

有礼送,Nodes小程序端午节版本发布

自上线到目前,Nodes已积累了1.6万用户,每天新增用户也在稳步增长, ? 从访问来源看,大部分访问来源来自小程序历史列表,可以从侧面反映:Nodes的留存率...

34170
来自专栏FreeBuf

如何通过Python实现自动填写调查问卷

0X00 前言的,我才想起来貌似我也还没做。对于这种无意义的问卷,我是不怎么感冒的,所以我打算使用”特技”来完成,也就是python,顺便重新复习一下pytho...

61050
来自专栏Java社区

快来查你注册过哪些网站?

1.2K20
来自专栏陈满iOS

iOS面试经验总结(某PA金融科技篇)

也许面试官自己也没自己实现过,毕竟有些东西苹果为什么这样设计,若不是苹果公司的工程师无法知道。

13930
来自专栏Java架构

一个java高级工程师的进阶之路

25630
来自专栏vue+shiro

基于vue(element ui) + ssm + shiro 的权限框架

现在的Java世界,各种资源很丰富,不得不说,从分布式,服务化,orm,再到前端控制,权限等等玲琅满目,网上有句话说,语言框架迭代太快了,我学不动了,不如回去搬...

1.1K20
来自专栏斑斓

处理遗留系统

处理遗留系统,几乎是每个程序员都不可能绕过的一件麻烦事儿。因为时间压力,技能不足以及功能复杂等诸多原因,常常使得遗留系统的代码变得糟糕混乱,可读性与维护性差,无...

28940

扫码关注云+社区

领取腾讯云代金券