当前位置:  开发笔记 > 编程语言 > 正文

使用10**9超过10亿的成本?

如何解决《使用10**9超过10亿的成本?》经验,为你挑选了2个好方法。

在Python中,像10**9文字一样的表达式也是文字吗?我要问的:在经常被调用且应该是轻量级的代码中使用表达式而不是有意义但可计算性较低的文字会有成本吗?



1> unutbu..:

没有性能成本.考虑一下:

import dis
def foo():
    x = 10**9
    y = 10**9

def bar():
    x = 1000000000
    y = 1000000000

dis.dis(foo)
dis.dis(bar)

产量

In [6]: dis.dis(foo)
  5           0 LOAD_CONST               3 (1000000000)
              3 STORE_FAST               0 (x)

  6           6 LOAD_CONST               4 (1000000000)
              9 STORE_FAST               1 (y)
             12 LOAD_CONST               0 (None)
             15 RETURN_VALUE        

In [8]: dis.dis(bar)
  9           0 LOAD_CONST               1 (1000000000)
              3 STORE_FAST               0 (x)

 10           6 LOAD_CONST               1 (1000000000)
              9 STORE_FAST               1 (y)
             12 LOAD_CONST               0 (None)
             15 RETURN_VALUE        

因此,当Python编译代码时,它会更改10**91000000000.运行字节码时,使用10**9或没有区别1000000000.



2> Kasramvd..:

它更多的是可读性和编码风格.通过编写类似10**9的替代1000000000或等等,你会让你的代码更短,更易读,因而其维护和改进会更容易.如果你想10**9在代码中多次使用,作为一种更优雅的方式,你最好将它用作模块顶层的全局变量,这样更优雅.喜欢:

MY_VARIABLE = 10**9

请注意,即使您不使用全局变量名称并通过代码使用其数值,python也会假设它是一个常量值,并且不会每次都重新计算它.

例如,正如您在下面的字节码中看到的那样,python将加载常量值(您在第一部分中定义a),c并且不会为此创建新对象1:

>>> def test():
...    a = 10**9
...    b = 1000000000
...    c = 10**9
... 
>>> dis.dis(test)
  2           0 LOAD_CONST               4 (1000000000)
              3 STORE_FAST               0 (a)

  3           6 LOAD_CONST               3 (1000000000)
              9 STORE_FAST               1 (b)

  4          12 LOAD_CONST               5 (1000000000)
             15 STORE_FAST               2 (c)
             18 LOAD_CONST               0 (None)
             21 RETURN_VALUE    

请注意,python小整数是单例,python只会创建它们的一个副本(-5到256).


它的可读性不高,因为它更短.它更具可读性,因为您不必计算零.
推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有