每一个简单的数学运算是否都使用相同的电量(如电池电量)?

2024-05-17 16:31:40 发布

您现在位置:Python中文网/ 问答频道 /正文

最近我一直在修改我的一些老python代码,这些代码本质上是代数循环,以便让它们执行得更快,通常是通过消除一些不必要的操作。通常,将列表中条目的值从0(作为python float,我认为默认情况下是double)更改为相同的值,这显然是没有必要的。或者,检查一个float是否等于某个东西,当它必须是那个东西时,因为如果不是,前面的“if”就不会触发,或者其他一些无关的操作。这让我想知道什么可以保存我的电池更多,因为我做了一些我的编码在总线上,我不能插入我的笔记本电脑。你知道吗

例如,以下两种操作中,哪一种预计使用较少的电池电量?你知道吗

if b != 0: #b was assigned previously, and I know it is zero already
    b = 0

或:

b = 0

第一个检查b是否为零,是的,所以它不做下一部分。第二个只是把b赋值为零,而不用费心去检查。我相信第一个更省时,因为你不需要改变记忆中的任何东西。这是正确的,如果是这样的话,它还会更节能吗?“更省时”是否总是意味着“更省电”?你知道吗


Tags: 代码目的编码列表if电池情况float
3条回答

Does every simple mathematical operation use the same amount of power (as in, battery power)?

不,计算两个数的加法和计算一张两千万像素照片的傅里叶变换是不一样的。你知道吗

I believe the first one is more time-efficient, as you don't have to change anything in memory. Is that correct, and if so, would it also be more power-efficient? Does "more time efficient" always imply "more power efficient"?

是的。你的直觉是对的,但这些都是微不足道的例子。如果你更深入的挖掘,你将进入一个未知的领域,这是一个很难掌握的奇怪的优化(例如,请看这个问题:Times two faster than bit shift?

我建议看钱德勒·卡鲁斯的演讲:"Efficiency with Algorithms, Performance with Data Structures" 他在视频中提到了4m49s的“节能指令”的概念。我同意他的观点,想想特定代码消耗了多少瓦特是没有用的。正如他所说

问:“如何节省电池寿命?”你知道吗

答:“结束破坏程序”。你知道吗

另外,在Python中,您甚至不需要考虑像这样的低级别问题。使用适当的数据结构和算法,祈祷Python解释器能为您提供优化的字节码。你知道吗

一般来说,代码使用的系统资源越多,这些资源使用的能力就越大。但是,基于时间或大小限制优化代码比从功耗角度考虑高级代码更有用。你知道吗

一种方法是用大O表示法。本质上,Big O表示法是一种比较算法大小和/或运行时复杂度的方法。https://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/

计算机的最底层是大量的晶体管,它们需要电源来改变和维持它们的状态。 很难预测任何一行python代码会消耗多少能量。你知道吗

相关问题 更多 >