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

提高能效,用Rust写代码

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

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

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

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

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

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

为什么Rust是节能的?

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

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

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

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

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

实际案例

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

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

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

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

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

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

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

基准测试

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

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

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

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

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

最大CPU

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

11,297sNb28资讯网——每日最新资讯28at.com

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

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

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

限定CPU

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

2,275sNb28资讯网——每日最新资讯28at.com

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

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

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

正常测试

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 直屏旗舰来了 iQOO 12和K70 Pro同台竞技

    旗舰机基本上使用的都是双曲面屏幕,这就让很多喜欢直屏的爱好者在苦等一款直屏旗舰,这次,你们等到了。据博主数码闲聊站带来的最新爆料称,Redmi下代旗舰K70 Pro和iQOO 12两款手
  • 中兴AX5400Pro+上手体验:再升级 双2.5G网口+USB 3.0这次全都有

    2021年11月的时候,中兴先后发布了两款路由器产品,中兴AX5400和中兴AX5400 Pro,从产品命名上就不难看出这是隶属于同一系列的,但在外观设计上这两款产品可以说是完全没一点关系
  • 三言两语说透设计模式的艺术-简单工厂模式

    一、写在前面工厂模式是最常见的一种创建型设计模式,通常说的工厂模式指的是工厂方法模式,是使用频率最高的工厂模式。简单工厂模式又称为静态工厂方法模式,不属于GoF 23种设计
  • 摸鱼心法第一章——和配置文件说拜拜

    为了能摸鱼我们团队做了容器化,但是带来的问题是服务配置文件很麻烦,然后大家在群里进行了“亲切友好”的沟通图片图片图片图片对比就对比,简单对比下独立配置中心和k8s作为配
  • 慕岩炮轰抖音,百合网今何在?

    来源:价值研究所 作者:Hernanderz“难道就因为自己的一个产品牛逼了,从客服到总裁,都不愿意正视自己产品和运营上的问题,选择逃避了吗?”这一番话,出自百合网联合创
  • 当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己“当家”的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
  • 东方甄选单飞:有些鸟注定是关不住的

    作者:彭宽鸿来源:华尔街科技眼‍‍‍‍‍‍‍‍‍‍东方甄选创始人俞敏洪带队的“7天甘肃行”直播活动已在近日顺利收官。成立后一
  • OPPO K11搭载高性能石墨散热系统:旗舰同款 性能凉爽释放

    日前OPPO官方宣布,将于7月25日14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖点就是将配备索尼
  • 荣耀Magicbook V 14 2021曙光蓝版本正式开售,拥有触摸屏

    荣耀 Magicbook V 14 2021 曙光蓝版本正式开售,搭载 i7-11390H 处理器与 MX450 显卡,配备 16GB 内存与 512GB SSD,重 1.48kg,厚 14.5mm,具有 1.5mm 键盘键程、
Top