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

提高能效,用Rust写代码

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

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

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

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

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

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

为什么Rust是节能的?

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

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

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

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

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

实际案例

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

图片图片5Ur28资讯网——每日最新资讯28at.com

图片图片5Ur28资讯网——每日最新资讯28at.com

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

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

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

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

基准测试

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

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

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

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

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

最大CPU

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


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

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

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

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

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

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

121 %5Ur28资讯网——每日最新资讯28at.com

37 %5Ur28资讯网——每日最新资讯28at.com

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

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

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

212 %5Ur28资讯网——每日最新资讯28at.com

57 %5Ur28资讯网——每日最新资讯28at.com

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

11,2975Ur28资讯网——每日最新资讯28at.com

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

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

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

限定CPU

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


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

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

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

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

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

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

44 %5Ur28资讯网——每日最新资讯28at.com

20 %5Ur28资讯网——每日最新资讯28at.com

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

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

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

55 %5Ur28资讯网——每日最新资讯28at.com

20 %5Ur28资讯网——每日最新资讯28at.com

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

2,2755Ur28资讯网——每日最新资讯28at.com

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

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

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

正常测试

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


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

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

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

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

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

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

41 %5Ur28资讯网——每日最新资讯28at.com

13 %5Ur28资讯网——每日最新资讯28at.com

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

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

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

2.6 %5Ur28资讯网——每日最新资讯28at.com

1 %5Ur28资讯网——每日最新资讯28at.com

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

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

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 5月iOS设备性能榜:M1 M2依旧是榜单前五

    和上个月一样,没有新品发布的iOS设备性能榜的上榜设备并没有什么更替,仅仅只有跑分变化而产生的排名变动,刚刚开始的苹果WWDC2023,推出的产品也依旧是新款Mac Pro、新款Mac Stu
  • Automa-通过连接块来自动化你的浏览器

    1、前言通过浏览器插件可实现自动化脚本的录制与编写,具有代表性的工具就是:Selenium IDE、Katalon Recorder,对于简单的业务来说可快速实现自动化的上手工作。Selenium IDEKat
  • 如何通过Python线程池实现异步编程?

    线程池的概念和基本原理线程池是一种并发处理机制,它可以在程序启动时创建一组线程,并将它们置于等待任务的状态。当任务到达时,线程池中的某个线程会被唤醒并执行任务,执行完任
  • 在线图片编辑器,支持PSD解析、AI抠图等

    自从我上次分享一个人开发仿造稿定设计的图片编辑器到现在,不知不觉已过去一年时间了,期间我经历了裁员失业、面试找工作碰壁,寒冬下一直没有很好地履行计划.....这些就放在日
  • 零售大模型“干中学”,攀爬数字化珠峰

    文/侯煜编辑/cc来源/华尔街科技眼对于绝大多数登山爱好者而言,攀爬珠穆朗玛峰可谓终极目标。攀登珠峰的商业路线有两条,一是尼泊尔境内的南坡路线,一是中国境内的北坡路线。相
  • 电视息屏休眠仍有网络上传 爱奇艺被质疑“薅消费者羊毛”

    记者丨宁晓敏 见习生丨汗青出品丨鳌头财经(theSankei) 前不久,爱奇艺发布了一份亮眼的一季报,不仅营收和会员营收创造历史最佳表现,其运营利润也连续6个月实现增长。自去年年初
  • 共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • 三星Galaxy Z Fold5今日亮相:厚度缩减但仍略显厚重

    据官方此前宣布,三星将于7月26日也就是今天在韩国首尔举办Unpacked活动,届时将带来带来包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy
  • 电博会与软博会实现"线下+云端"的双线融合

    在本次“电博会”与“软博会”双展会利好条件的加持下,既可以发挥展会拉动人流、信息流、资金流实现快速交互流动的作用,继而推动区域经济良性发展;又可以聚
Top