如何分析Python代码的性能?

时间:2017-06-08 15:17:43

标签: python-3.x performance-testing

的问候。要分析Python代码的性能,下面的代码可以做到吗?

import time

to = time.clock(); x = [];
for i in range(0,4):
    x.append(i*0.1);
tend = time.clock(); print(tend-to);

to = time.clock();
y = list(map(lambda x: x*0.1, list(range(0,4))));
tend = time.clock(); print(tend-to);

计时器显示不一致。但有时,两个计时器的结果也显示出不一致性(有时第一个计时器更快,有时第二个计时器更快,但第一个计时器往往更快)。一些产出:

4.631622925399206e-05
4.4898385501326854e-05

4.9624531343562917e-05
6.852911471254275e-05

5.0569760512011734e-05
4.867930217511418e-05

3.78091667379527e-05
2.5993802132341648e-05

我的问题与上面的代码有关:

  • 我以为计时器代码的性能应该是一致的吗?如何知道语法或策略比另一种更好? (比其他人更有效率)对此有何想法?

先谢谢。此致,Arief

1 个答案:

答案 0 :(得分:1)

来自official documentation

>>> import timeit
>>> timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)
0.3018611848820001
>>> timeit.timeit('"-".join([str(n) for n in range(100)])', number=10000)
0.2727368790656328
>>> timeit.timeit('"-".join(map(str, range(100)))', number=10000)
0.23702679807320237

换句话说:如果我们努力谈论执行时间测量的精确度 - 我们限制迭代一个简单的函数数千次以引起所有副作用。