为什么在Python中返回一个元组比返回多个值要快



我做了一个小测试:

In [12]: def test1():
    ...:     return 1,2,3
    ...: 
In [13]: def test2():
    ...:     return (1,2,3)
    ...: 
In [14]: %timeit a,b,c = test1()

最慢的跑步时间是最快的66.88倍。这可能意味着正在缓存中间结果。10000000个循环,最佳3:92.7 ns/循环

In [15]: %timeit a,b,c = test2()

最慢的跑步时间是最快的74.43倍。这可能意味着正在缓存中间结果。10000000个循环,最佳3:80.1 ns/循环

返回一个元组比返回多个值大约快15%。为什么会这样呢?

test1test2产生相同的字节码,因此它们必须以相同的速度执行。你们的测量条件不一致(例如,由于额外的后台进程,test2的CPU负载增加了)。

>>> import dis
>>> def test1():
...     return 1,2,3
...
>>> def test2():
...     return (1,2,3)
...
>>> dis.dis(test1)
  2           0 LOAD_CONST               4 ((1, 2, 3))
              3 RETURN_VALUE
>>> dis.dis(test2)
  2           0 LOAD_CONST               4 ((1, 2, 3))
              3 RETURN_VALUE
>>>

相关内容

  • 没有找到相关文章

最新更新