为了账号安全,请及时绑定邮箱和手机立即绑定

变量名称的长度会影响程序运行的速度吗?

变量名称的长度会影响程序运行的速度吗?

UYOU 2021-09-02 14:57:28
我有一小段代码需要长时间运行。我想知道我使用的变量名称的长度是否可以改变程序执行的速度。这是一个用 Python 编写的非常简单的示例。程序A    x = 1    while not x == 0:          print('message')程序B    xyz = 1    while not xyz == 0:          print('message')如果我在两台相同的机器上运行程序 A 和程序 B 30 年,程序 A 会比程序 B 打印更多次“消息”。
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

不,名称本身对结果代码的运行速度没有影响。变量名只是用来区分 Python 源代码中由整数索引表示的两个变量在查找表中:


>>> dis.dis('x=1')

  1           0 LOAD_CONST               0 (1)

              2 STORE_NAME               0 (x)

              4 LOAD_CONST               1 (None)

              6 RETURN_VALUE

>>> dis.dis('xyz=1')

  1           0 LOAD_CONST               0 (1)

              2 STORE_NAME               0 (xyz)

              4 LOAD_CONST               1 (None)

              6 RETURN_VALUE

>>> dis.dis('x=1;xyz=2;')

  1           0 LOAD_CONST               0 (1)

              2 STORE_NAME               0 (x)

              4 LOAD_CONST               1 (2)

              6 STORE_NAME               1 (xyz)

              8 LOAD_CONST               2 (None)

             10 RETURN_VALUE

在前两个中,您会注意到在生成的字节码中没有基于变量名称的区别。在最后,您将看到字节码在两者之间进行区分,但仅在定义它们的顺序上,而不是标签的长度上。


查看完整回答
反对 回复 2021-09-02
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

差异非常小,我们不能得出结论,这是因为变量的名称。


import timeit

x=1

xyz=1



start_time = timeit.default_timer()

for i in range(1,1000000):

    if x==1:

        print("message")

elapsed = timeit.default_timer() - start_time



start_time2 = timeit.default_timer()

for i in range(1,1000000):

    if xyz==1:

        print("message")


elapsed2 = timeit.default_timer() - start_time2


print("small variable printing = ",str(elapsed),"big variable printing = "+str(elapsed2))

结果是:


small variable printing =  3.6490847053481588 big variable printing = 3.7199463989460435


查看完整回答
反对 回复 2021-09-02
  • 3 回答
  • 0 关注
  • 344 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号