当前位置:首页 > 科技  > 软件

提高能效,用Rust写代码

来源: 责编: 时间:2024-06-12 17:32:35 225观看
导读全球数据中心的数量在不断增加,它们的电力消耗也在不断增加。提高能效的一种方法当然是不断开发更好的硬件,但作为软件开发人员,我们也应该尽自己的一份力量。根据国际能源署(IEA)的数据,2022年全球数据中心的用电量估计

全球数据中心的数量在不断增加,它们的电力消耗也在不断增加。提高能效的一种方法当然是不断开发更好的硬件,但作为软件开发人员,我们也应该尽自己的一份力量。6Gm28资讯网——每日最新资讯28at.com

根据国际能源署(IEA)的数据,2022年全球数据中心的用电量估计为240 - 340太瓦时。这相当于总电力需求的1.0%至1.3%。这些数字不包括加密货币挖矿,后者可能额外消耗了110太瓦时的电力,占全球电力需求的0.4%。6Gm28资讯网——每日最新资讯28at.com

这篇文章展示了用Rust编码如何帮助更有效地利用现有资源,帮助保护我们的星球——至少是一点点。6Gm28资讯网——每日最新资讯28at.com

6Gm28资讯网——每日最新资讯28at.com

6Gm28资讯网——每日最新资讯28at.com

为什么Rust是节能的?

一般来说,比较编程语言的效率是不容易的,因为结果受到很多因素的影响。然而,R. Pereira等人的一篇论文比较了27种编程语言的能耗和内存效率以及速度。为了获得尽可能客观的结果,他们使用了各种基准测试进行比较。6Gm28资讯网——每日最新资讯28at.com

该论文指出,Rust在能耗和执行时间方面排名第二,仅比第一名c多消耗约3%的能量,执行速度仅慢4%。根据这些测量结果,Rust非常节能,特别是如果你将其与PHP的能耗进行比较,PHP的能耗是Rust的28倍,Python的能耗是Rust的74倍。6Gm28资讯网——每日最新资讯28at.com

论文链接:https://www.sciencedirect.com/science/article/abs/pii/S0167642321000022?via%3Dihub6Gm28资讯网——每日最新资讯28at.com

6Gm28资讯网——每日最新资讯28at.com

6Gm28资讯网——每日最新资讯28at.com

实际案例

在Tweede golf,最近在重写一个项目时体验了Rust的高效率和速度。他们用Rust构建了一个图书俱乐部管理应用程序,它之前是用PHP编写的,具有相同的功能。这个应用程序允许读书俱乐部借书,并根据图书馆的等级体系来管理这些书的预订、分发和发票。6Gm28资讯网——每日最新资讯28at.com

图片图片6Gm28资讯网——每日最新资讯28at.com

图片图片6Gm28资讯网——每日最新资讯28at.com

老实说,节省CPU和内存并不是重写的主要原因,维护才是。Rust应用程序更容易维护,Rust编译器或依赖项的版本升级不太可能破坏应用程序。此外,使用Rust的效率更高。这是因为有良好的生态系统和工具链,例如编译器提供了非常有用的错误消息,严格的类型系统也有助于编写正确的软件。6Gm28资讯网——每日最新资讯28at.com

在他们的示例中,Rust重写只花费了原始PHP实现一半的开发时间,这还不包括任何新加需求。当然,重新实现现有的实现通常比构建原始实现更容易和更快,但是没有预料到开发时间的差异会如此之大。6Gm28资讯网——每日最新资讯28at.com

6Gm28资讯网——每日最新资讯28at.com

6Gm28资讯网——每日最新资讯28at.com

基准测试

让我们看一下性能比较。对于测试,使用了开源HTTP基准测试工具Siege和25个并发用户。这些应用程序在一台Ubuntu笔记本电脑上本地运行,该笔记本电脑配备了第12代英特尔®酷睿™i7-12700H和32gb内存。由于应用程序是作为容器运行的,使用docker stats命令来估计资源消耗,并使用docker Compose命令在需要的地方限制资源。6Gm28资讯网——每日最新资讯28at.com

执行的最直接的基准测试没有对PHP或Rust应用程序或Siege施加任何限制。针对预订概览页面执行了测试,因为这会给应用程序和数据库带来一些计算负载。Rust版本由一个应用程序容器和一个DB容器组成。6Gm28资讯网——每日最新资讯28at.com

PHP版本还包含一个nginx,它负责提供所有的静态文件,如CSS, JS和图标。Rust应用程序自己为它们服务。总的CPU使用情况是所有容器的总和,而App CPU和内存使用情况只涉及Rust或PHP容器。6Gm28资讯网——每日最新资讯28at.com

6Gm28资讯网——每日最新资讯28at.com

6Gm28资讯网——每日最新资讯28at.com

最大CPU

首先,在PHP和Rust应用程序上分别加载全部负载20秒。6Gm28资讯网——每日最新资讯28at.com


6Gm28资讯网——每日最新资讯28at.com

Total CPU6Gm28资讯网——每日最新资讯28at.com

App CPU6Gm28资讯网——每日最新资讯28at.com

Memory Usage6Gm28资讯网——每日最新资讯28at.com

Hits6Gm28资讯网——每日最新资讯28at.com

PHP6Gm28资讯网——每日最新资讯28at.com

121 %6Gm28资讯网——每日最新资讯28at.com

37 %6Gm28资讯网——每日最新资讯28at.com

276 MiB6Gm28资讯网——每日最新资讯28at.com

2836Gm28资讯网——每日最新资讯28at.com

Rust6Gm28资讯网——每日最新资讯28at.com

212 %6Gm28资讯网——每日最新资讯28at.com

57 %6Gm28资讯网——每日最新资讯28at.com

31 MiB6Gm28资讯网——每日最新资讯28at.com

11,2976Gm28资讯网——每日最新资讯28at.com

可以看到,Rust在点击次数(即在20秒内加载的页面数量)上比PHP高出近4000 %。此外,我们看到PHP需要的内存几乎是Rust应用程序的9倍。6Gm28资讯网——每日最新资讯28at.com

6Gm28资讯网——每日最新资讯28at.com

6Gm28资讯网——每日最新资讯28at.com

限定CPU

你可能会认为这是一种不公平的比较,因为Rust能够利用更多的CPU资源。因此,将每个应用容器的CPU使用率限制在20%,并执行相同的测试。6Gm28资讯网——每日最新资讯28at.com


6Gm28资讯网——每日最新资讯28at.com

Total CPU6Gm28资讯网——每日最新资讯28at.com

App CPU6Gm28资讯网——每日最新资讯28at.com

Memory Usage6Gm28资讯网——每日最新资讯28at.com

Hits6Gm28资讯网——每日最新资讯28at.com

PHP6Gm28资讯网——每日最新资讯28at.com

44 %6Gm28资讯网——每日最新资讯28at.com

20 %6Gm28资讯网——每日最新资讯28at.com

96.3 MiB6Gm28资讯网——每日最新资讯28at.com

696Gm28资讯网——每日最新资讯28at.com

Rust6Gm28资讯网——每日最新资讯28at.com

55 %6Gm28资讯网——每日最新资讯28at.com

20 %6Gm28资讯网——每日最新资讯28at.com

10.8 MiB6Gm28资讯网——每日最新资讯28at.com

2,2756Gm28资讯网——每日最新资讯28at.com

Rust应用程序的总CPU使用量仍然更高,这与Rust能够处理33倍以上的请求这一事实有关,因此给数据库带来了更高的负载。同样,我们可以看到PHP使用了大约9倍的内存。6Gm28资讯网——每日最新资讯28at.com

6Gm28资讯网——每日最新资讯28at.com

6Gm28资讯网——每日最新资讯28at.com

正常测试

这些虽然意义重大,但都是非常理论化的测试。在实践中,页面上不会有这么多用户,而且在加载下一个页面之前,他们也会花几秒钟的时间对一个页面的加载做出反应。为了更真实地测试这一点,我们为Siege提供了9个不同的url,这些url在页面加载后0到10秒之间随机访问。为了获得更好的概述,我们让这个测试运行60秒而不是20秒。6Gm28资讯网——每日最新资讯28at.com


6Gm28资讯网——每日最新资讯28at.com

Total CPU6Gm28资讯网——每日最新资讯28at.com

App CPU6Gm28资讯网——每日最新资讯28at.com

Memory Usage6Gm28资讯网——每日最新资讯28at.com

Hits6Gm28资讯网——每日最新资讯28at.com

PHP6Gm28资讯网——每日最新资讯28at.com

41 %6Gm28资讯网——每日最新资讯28at.com

13 %6Gm28资讯网——每日最新资讯28at.com

108.6 MiB6Gm28资讯网——每日最新资讯28at.com

2856Gm28资讯网——每日最新资讯28at.com

Rust6Gm28资讯网——每日最新资讯28at.com

2.6 %6Gm28资讯网——每日最新资讯28at.com

1 %6Gm28资讯网——每日最新资讯28at.com

12.1 MiB6Gm28资讯网——每日最新资讯28at.com

3156Gm28资讯网——每日最新资讯28at.com

在这里,我们可以真正看到Rust在资源消耗方面的好处。PHP应用程序需要13%的CPU来处理请求,而Rust容器只需要1%。同样,在内存使用方面,Rust的性能也是PHP的九倍。6Gm28资讯网——每日最新资讯28at.com

事实证明,Rust不仅对开发人员来说更有趣,而且对资源也非常友好。我们已经看到新的Rust应用程序比旧的PHP实现快40倍。在集群中,我们观察到资源使用的显著减少。6Gm28资讯网——每日最新资讯28at.com

6Gm28资讯网——每日最新资讯28at.com

6Gm28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-93372-0.html提高能效,用Rust写代码

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Next.js 15 来了,全新的编译器、700倍的构建速度提升

下一篇: 一个巧妙设计,解锁 React19 初始化接口优秀实践,彻底摒弃 useEffect

标签:
  • 热门焦点
  • 一加首款折叠屏!一加Open渲染图出炉:罕见单手可握小尺寸

    8月5日消息,此前就有爆料称,一加首款折叠屏手机将会在第三季度上市,如今随着时间临近,新机的各种消息也开始浮出水面。据悉,这款新机将会被命名为“On
  • JavaScript 混淆及反混淆代码工具

    介绍在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。什么是混
  • 如何正确使用:Has和:Nth-Last-Child

    我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字。例如,一个拥有三个或更多子项的grid。你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人员可能会涉及各种各样的安全任务,包括但不限于:开发某些安全工具的插件,满足自己特定的安全需求;自定义github搜索工具,快速查找所需的安全资料、漏洞poc、exp
  • 最“俊美”淘宝卖家,靠直播和短视频圈粉,上架秒光,年销3000万

    来源 | 电商在线文|易琬玉编辑|斯问受访店铺:Ringdoll戒之人形图源:微博@御座的黄山、“Ringdoll戒之人形”淘宝店铺有关外貌的评价,黄山已经听累了。生于1985年的他,哪
  • “又被陈思诚骗了”

    作者|张思齐 出品|众面(ID:ZhongMian_ZM)如今的国产悬疑电影,成了陈思诚的天下。最近大爆电影《消失的她》票房突破30亿断层夺魁暑期档,陈思诚再度风头无两。你可以说陈思诚的
  • 品牌洞察丨服务本地,美团直播成效几何?

    来源:17PR7月11日,美团App首页推荐位出现“美团直播”的固定入口。在直播聚合页面,外卖“神枪手”直播间、美团旅行直播间、美团买菜直播间等均已上线,同时
  • 小米MIX Fold 3下月亮相:今年唯一无短板的全能折叠屏

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都有新的进展,其中荣耀、三星都已陆续发布了最新的折叠屏旗舰,尤其号荣耀Magi
  • 三星Galaxy Z Fold5今日亮相:厚度缩减但仍略显厚重

    据官方此前宣布,三星将于7月26日也就是今天在韩国首尔举办Unpacked活动,届时将带来带来包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy
Top