QCon 演讲火热征集中,快来分享你的技术实践与洞见! 了解详情
写点什么

高效又节能的 Rust 能帮助拯救地球吗?

  • 2022-02-17
  • 本文字数:2467 字

    阅读完需:约 8 分钟

高效又节能的Rust能帮助拯救地球吗?

这种编程语言安全又高效,但很难学,会拖累生产力。


去年 12 月,在 AWS Re:invent 大会上,Rust 基金会主席 Shane Miller 和 Tokio 项目负责人 Carl Lerche 提出了使用 Rust 来尽可能减小人类对环境破坏的概念,但他们认为 Rust 陡峭的学习曲线是通向这一目标的道路上最大的障碍。


Miller 还是 AWS 的高级工程经理,而 Lerche 是这家云巨头的首席工程师。


Rust 为什么能拯救地球呢?答案是,更高效的代码需要的运行资源也会更少,这意味着数据中心消耗的能源会更少,而且制造计算设备并将其运送到世界各地的过程中对环境的影响也会更低。



Shane Miller 和 Carl Lerche 在 AWS Re:invent 2021 上谈论 Rust 的效率和安全性


“数据中心消耗了……全球能源总量的 1%,”Miller 说道。不过他补充说,由于技术进步以及云计算行业倾向于减少闲置资源的比例等因素,过去 10 年来行业消耗的能源总量几乎没有变化。


他们论点的第二部分是说 Rust 是最高效的编程语言之一。他们引用的证据来源是 2017 年的一篇论文[PDF],这篇论文测量了 27 种编程语言的性能、内存使用量和能源效率,并将 C 列为最高效的语言,而 Rust 紧随其后,能源使用量仅比 C 增加了 3%。根据这项研究,Java 使用的能量几乎是 C 的两倍,C#则是 C 的三倍以上,Python 则需要使用 75 倍以上的能量。



根据 2017 年的一项研究项目,按能源效率排名的语言

高效率的 Rust 语言


这项研究是有问题的,正如这次会议上的一些人所观察到的那样:之所以会产生这样的结果,不是因为有些语言不那么关心能源效率,而是因为编程语言有许多实现和编译器,其中一些是相对更高效的。这篇论文还测出来 TypeScript 的效率只有 JavaScript 的十分之一,这也很奇怪,因为它明明可以编译为 JavaScript,并且两种语言编写的代码差不多。


不过这些问题并没有那么重要,因为没有人质疑 Rust 作为一种系统语言的效率的确极为出色这个结论。 而且 Miller 和 Lerche 的论点并不仅仅依赖于这项研究。Miller 还引用了来自 Discord 和 Tenable 的案例研究,这些研究显示了 Rust 带来的显著效率提升。


在 Tenable 案例中,开发人员用 Rust 重写了一个 JavaScript 组件,并实现了 50%的延迟改进、75%的 CPU 使用率下降和 95%的内存使用率下降。“这真是不可思议,”Miller 说。“这可节约了不是一点半点,而且不仅仅是在基础设施方面节省了资源,它还意味着节约大量能源。”


Lerche 说,垃圾收集语言本质上就是效率较低的。垃圾收集是自动化内存管理工作的常用方法,它的机制是识别超出范围的对象并释放它们的内存。


“垃圾收集器必须暂停进程以执行垃圾收集操作。当它暂停时……该服务无法再响应请求,”他说。这意味着 Java、C#和 JavaScript 等语言永远无法像 C 和 Rust 那样兼具高效率和高性能。


为什么不直接使用 C 和 C++呢?原因在于安全性和与内存相关的错误上,Lerche 说,他还引用了一项研究,“C 和 C++软件中所有高度严重的安全漏洞中有 70%是由于[缺乏]内存安全性。”


他说,Rust 是革命性的,因为“Rust 是第一种在保持内存安全性的同时具备高效率的主流编程语言。”Lerche 解释了 Rust 如何通过所有权(ownership)的理念来实现内存安全性,这种理念基于一个称为仿射逻辑的概念,其中每个对象一次只有一个所有者(owner)。


所有权规则会在编译时检查,因此没有运行时开销。并发在 Rust 中也比在 C 或 C++中更容易实现、更安全,从而进一步提升了性能和效率。


看起来这个目标很容易达成。开发人员和 IT 社区需要做的就是迁移到 Rust 即可,代码将运行得更快、更安全,地球的能源使用量会随之下降,AWS 可以关闭他们一半的数据中心(尽管我们在会议期间没有听到最后这句话)。

Rust 很节能,但太难学导致流行不起来

“但是,”Miller 说,“如果我们要实现碳减排目标……我们将需要使用 C 或 Rust 等节能语言编写大多数新软件。但是 Rust 确实有一个“臭名昭著”的学习曲线……我们看到了不少人在采用它,但我们并没有看到它广泛流行开来。


“我看到 Rust 使用率增长最快的场景是通过使用 Rust 可以获得显著性能提升的场景,例如大容量的数据库服务等等;在物联网和嵌入式等资源受限的小型环境中也有很多人用 Rust。但在类似这样的场景里:你正在写一个 JavaScript 应用的后端——我们是很难看到类似的采用率的。”


问题是在 Rust 中编程是很困难的。Java、JavaScript 和 Python 等语言被广泛采用的原因之一是程序员可以更快地提高他们的工作效率。


这就是房间里的大象,“著名的学习曲线,”Miller 说。在最近的一项调查中,“在表示不再使用该语言的工程师中,55%的受访者将学习和生产力列为放弃该语言的原因。经验丰富的工程师需要在主题专家的支持下进行三到六个月的学习,然后才能使用该语言进行高效工作。”


有没有可能抚平学习曲线呢?“学习曲线的部分问题并不是说语言有多难用,而是开发体验存在不足,因此我们看到来自 Java 等语言并尝试使用 Rust 的工程师们说,他们对调试器的体验感到不舒服,”Miller 在回答我们的问题时说。“Rust 的性能分析工具与他们习惯使用的也不一样。这就是我们正在调查的领域。”


“从历史上看,Rust 是作为 C++的替代品出现的,”Lerche 补充道。“它的目标就是那个用例。但是我们发现在更高层次上还有很多应用场景。


“如果你要构建一个服务,你得先看一遍 Rust 写得非常详细的手册,然后了解生命周期、trait 和 trait 模式,以及所有这些属于这种语言一部分的概念,但这些概念和你要编写的服务基本没什么关系。”他说,Rust 项目有计划编写一套简化的文档,其中只包含一些“编写服务所需的知识”。


尽管这些举措会有所帮助,但很难想象 Rust 真的会变得那么简单易用,简单到足够让业务应用程序的开发人员能从 Java 或 JavaScript,或 C#或 Python 切换过来。毕竟他们还是有很多业务问题需要解决,并且用其他那些语言来搞定会快得多。


进一步说,在计算栈的底层,代码可能会是用 Rust 或 C 或 C++编写的,因为对于 Linux 内核或数据库引擎的核心来说,高性能和效率已经是一项要求了。


也就是说,Rust 要发挥作用的关键在于目标环境的软件低效率已经显著增加了客户成本,并且 IT 行业非常关注这种低效率问题才行,而且 Rust 也只是解决低效率问题的一部分手段而已。


原文链接:https://www.theregister.com/2021/11/30/aws_reinvent_rust

2022-02-17 09:304172
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 542.5 次阅读, 收获喜欢 1978 次。

关注

评论 1 条评论

发布
用户头像
这……这感觉是在说一个不需要额外说明的道理啊。rust的目标是干死C++,而不是针对java。应该说rust是c++的安全替代,而不是说rust无所不能。同时通过pyo3等项目,rust可以用来在特定情况下显著优化python之类高级语言写的程序的性能。反正就是当优化执行性能本身已经有规模效益时,原来用c/c++来进行的优化,现在有了个安全的多的替代方案
2022-02-17 16:51
回复
没有更多了
发现更多内容

QCN9274 QCN6274 IPQ9574|What Does Wi-Fi 7 Actually Bring?

wallyslilly

qcn9274 qcn6274 ipq9574

已解决TypeError: Descriptors cannot not be created directly异常的正确解决方法,亲测有效!!!

小明Java问道之路

CQT新里程碑:SOC 2 数据安全认证通过,加强其人工智能支持

股市老人

龙蜥系统运维联盟:Kindling-OriginX 如何集成 DeepFlow 的数据增强网络故障的解释力

OpenAnolis小助手

deepflow 开源 系统运维 ebpf 龙蜥社区

马斯克称首位受试者可凭思维操控鼠标;字节低调推出视频模型丨 RTE 开发者日报 Vol.148

声网

【论文解读】transformer小目标检测综述

合合技术团队

目标检测 Transformer 深度学习、

基于规则引擎的多维度配置化适配系统

五陵散人

规则引擎 匹配

今日必读的9篇大模型论文

学术头条

人工智能 论文 大模型

开发竞猜比分与专家分析功能:如何为体育直播平台注入新活力

软件开发-梦幻运营部

听 GPT 讲 client-go 源代码 (9)

fliter

ABCDE联合创始人BMAN确认出席Hack .Summit() 2024香港Web3盛会

TechubNews

香港Web3

OpenAI的Sora亮相:AI视频生成的新用场

算AI

人工智能 创业 创新 sora

inBuilder低代码平台新特性推荐-第十六期

inBuilder低代码平台

开源 低代码

解锁Mysql中的JSON数据类型,怎一个爽字了得

不在线第一只蜗牛

json MySQL 数据库 开发语言

已解决zipfile.BadZipFile: File is not a zip file异常的正确解决方法,亲测有效!!!

小明Java问道之路

京东商品优惠券数据采集

tbapi

京东 京东API接口 京东商品优惠券数据 京东商品详情数据

面试官:如何实现多级缓存?

不在线第一只蜗牛

缓存 程序员 面试

有少年气的手机,正奔跑在AI旷野

脑极体

AI手机

2023 re:Invent 用 PartyRock 10 分钟构建你的 AI 应用

亚马逊云科技 (Amazon Web Services)

亚马逊云科技 生成式人工智能 Amazon CodeWhisperer Amazon Bedrock Amazon Q

揭秘 LLMs 时代向量数据库的 3 大实用场景

Zilliz

Milvus 向量数据库 LLM zillizcloud rag

听 GPT 讲 client-go 源代码 (10)

fliter

接手外包团队开发的微服务项目,人麻了!

伤感汤姆布利柏

OpenTiny Vue 组件库适配微前端可能遇到的4个问题

OpenTiny社区

开源 Vue 前端 微前端 组件库

LaunchPad 市场的复苏,Penpad 成新兴生力军

石头财经

拼多多商品优惠券数据采集

tbapi

拼多多 拼多多商品详情接口 拼多多商品数据采集

k8s-权限管理

EquatorCoco

Kubernetes 云原生 k8s

CORS就是跨域吗?

EquatorCoco

CORS web开发 跨域

你好,iLogtail 2.0!

阿里巴巴云原生

阿里云 云原生 iLogtail

新一轮 LaunchPad 热潮形成的根源在哪里,Penpad或成机会

BlockChain先知

高效又节能的Rust能帮助拯救地球吗?_AI&大模型_Tim Anderson_InfoQ精选文章