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

提高能效,用Rust写代码

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

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

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

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

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

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

为什么Rust是节能的?

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

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

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

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

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

实际案例

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

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

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

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

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

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

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

基准测试

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

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

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

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

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

最大CPU

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

限定CPU

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

正常测试

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 官方承诺:K60至尊版将会首批升级MIUI 15

    全新的MIUI 15今天也有了消息,在官宣了K60至尊版将会搭载天玑9200+处理器和独显芯片X7的同时,Redmi给出了官方承诺,K60至尊重大更新首批升级,会首批推送MIUI 15。也就是说虽然
  • Redmi Pad评测:红米充满野心的一次尝试

    从Note系列到K系列,从蓝牙耳机到笔记本电脑,红米不知不觉之间也已经形成了自己颇有竞争力的产品体系,在中端和次旗舰市场上甚至要比小米新机的表现来得更好,正所谓“大丈夫生居
  • 容量越大越不坏?24万块硬盘故障率报告公布 这些产品零故障

    8月5日消息,云存储服务商Backblaze发布了最新的硬盘故障率报告,年故障率有所上升。Backblaze发布的硬盘季度统计数据,其中包括故障率等重要方面。这些结
  • 如何正确使用:Has和:Nth-Last-Child

    我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字。例如,一个拥有三个或更多子项的grid。你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会
  • Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 一条抖音4亿人围观 ! 这家MCN比无忧传媒还野

    作者:Hiu 来源:互联网品牌官01 擦边少女空降热搜,幕后推手曝光被网友誉为“纯欲天花板”的女网红井川里予,近期因为一组哥特风照片登上热搜,引发了一场互联网世界关于
  • 四年持续更迭坚持探索行业无人之境,HarmonyOS 4带来五大升级多项创新

    除了华为每年新发布的旗舰手机系列,上亿花粉更加期待鸿蒙系统每次的跨版本大更新。8月4日,HarmonyOS 4于HDC 2023正式发布,这也是该系统历经四年的再
  • 2纳米决战2025

    集微网报道 从三强争霸到四雄逐鹿,2nm的厮杀声已然隐约传来。无论是老牌劲旅台积电、三星,还是誓言重回先进制程领先地位的英特尔,甚至初成立不久的新
  • DRAM存储器10月价格下跌,NAND闪存本月价格与上月持平

    10月30日,据韩国媒体消息,自今年年初以来一直在上涨的 DRAM 存储器的交易价格仅在本月就下跌了近 10%,此次是全年首次降价,而NAND 闪存本月价格与上月持平。市
Top