← 最新论文
💻 computer science

Watts This Smell: A Comprehensive Taxonomy of Software Energy Smells

本文引入了一个包含 12 种软件能耗异味和 65 个根源的全面且与语言无关的分类法,并通过对超过 21,000 对 Python 代码的分析进行了实证验证,旨在证明能耗优化与性能优化是不同的,并为绿色软件工程提供基础资源。

原作者: Mohammadjavad Mehditabar, Saurabhsingh Rajput, Tushar Sharma

发布于 2026-07-09
📖 1 分钟阅读☕ 轻松阅读

原作者: Mohammadjavad Mehditabar, Saurabhsingh Rajput, Tushar Sharma

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下你是一位经营着一家大型 24 小时餐厅的大厨。你的菜单上有成千上万道菜肴(软件程序),每天都要为数百万名顾客服务。

很长一段时间以来,你只关心一件事:速度。“这道菜出厨房要多久?”你会这样问。如果一道菜从 12 秒缩短到 10 秒,你会感到很欣慰。

但最近,你意识到了一些可怕的事实:速度并不是故事的全貌。 有时,一道出餐更快的菜实际上会消耗大量的电力,因为厨师在厨房里疯狂地来回奔跑,或者不停地开关烤箱,或者使用了一个巨大且低效的搅拌机。这就是这篇论文要解决的问题。它旨在寻找你厨房代码中的“能量异味”——那些即使食物味道没问题,却依然在浪费电力的坏习惯。

以下是研究人员所做工作的简单拆解:

1. 大问题:速度 vs. 能量

论文首先打破了一个常见的迷思:“更快总是意味着更环保。”

  • 类比: 想象你在开车。你可以通过猛踩油门和频繁刹车在 5 分钟内到达商店(高速,高油耗)。或者,你可以通过平稳驾驶在 7 分钟内到达(速度稍慢,但油耗极低)。
  • 现实: 在软件领域,编写运行速度快的代码并不总是能节省能量。有时,让代码运行得更快实际上会让计算机的处理器工作得更辛苦,从而消耗更多电力,造成整体能量的浪费。

2. 解决方案:“异味”分类法

研究人员想要为这些坏习惯建立一本字典。他们称之为**“能量异味”(Energy Smells)**。就像房子里的异味预示着有东西在腐烂一样,“代码异味”是在告诉开发者某些地方效率低下。

他们并非凭空猜测,而是进行了一场大规模的寻宝:

  • 搜寻过程: 他们阅读了 60 篇不同的科学论文,并筛选了 400 多份其他文档,以找出每一种导致代码浪费能量的方式。
  • 分类过程: 他们发现了 320 种不同的坏习惯。随后,他们将这些习惯整理成一个整齐的两级家族树:
    • 第一层(类别): 异味的总体类型(例如,“浪费工作”或“糟糕的内存使用”)。
    • 第二层(根本原因): 你具体做错的地方(例如,“你把同一个数学题计算了两遍”或“你在不需要时仍保留着沉重的内存对象”)。

结果: 他们创建了一张包含 12 个主要类别65 个特定根本原因的地图。这是首次制作出如此全面、且与语言无关(适用于 Python、Java、C++ 等)的地图。

3. 验证:在现实世界中测试

如果一份清单与现实不符,那它就是毫无用处的。因此,研究人员建立了一个巨大的“测试厨房”。

  • 数据集: 他们提取了 21,000 对代码。在每一对中,一个版本是“糟糕”的方式,另一个版本是“优秀”的方式,但它们完成的工作完全相同。
  • 测量: 他们精确测量了每个版本消耗的电力、时间和内存。
  • AI 侦探: 他们使用了一个超级智能的 AI(大语言模型/LLM)来观察表现最差的前 3,000 个案例,并询问:“我们的 65 种异味中,哪一种正在导致这种浪费?”

他们的发现:

  • AI 是正确的: AI 成功地将坏代码与他们的新地图匹配起来,准确率达到了 85%。这证明了他们的地图是真实且有用的。
  • 多种异味并存: 大多数坏代码(71%)并非仅由 一种 异味引起,而是多种坏习惯同时发生的“鸡尾酒式”组合。
  • 大赢家: 最大的节能点并不总是那些运行最快的代码。修复内存问题(例如,保留了不需要的数据)节省的能量最多。
  • 令人意外的结果: 有时,修复一个问题会让代码运行得更慢,但却能节省更多的能量。这证明了你不能只看速度;你必须看电费单。

4. 为什么这很重要

你可以把这篇论文看作是给了开发者一个通用的**“发动机检查灯”**。

  • 在以前,开发者可能会修复一个运行缓慢的程序,却没意识到他们实际上是在浪费电力。
  • 现在,他们拥有了一套共同的语言。如果一名开发者看到了“冗余计算”这种异味,他们就会确切知道为了省电该去修复什么。

核心结论

研究人员不仅发现了几种坏习惯,还构建了一部完整的软件能量浪费百科全书。他们证明了,为了拯救地球(以及省钱),我们不能只盯着软件运行得有多快,而要开始关注它使用电力的效率有多高。他们甚至发布了他们的“测试厨房”数据和这张地图供所有人使用,以便全世界都能开始烹饪更绿色的软件。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →