2017-06-08 3 views
0

よろしく。 Pythonコードのパフォーマンスを分析するには、以下のコードでそれを行うことができますか?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); 

タイマに矛盾があります。しかし時には、2つのタイマーの結果にも矛盾が見られることがあります(最初のタイマーは高速ですが、時には2番目のタイマーが速い場合もあります)。いくつかの出力:

4.631622925399206e-05 
4.4898385501326854e-05 

4.9624531343562917e-05 
6.852911471254275e-05 

5.0569760512011734e-05 
4.867930217511418e-05 

3.78091667379527e-05 
2.5993802132341648e-05 

私の質問は、上記のコードに関連:

  • 私は、コードのパフォーマンスを計算するためのタイマーが一貫していなければならないと思いましたか?構文や戦術が他のものよりも優れていることを知るには? (他のものよりも効率的に動く)これに関する考え?

ありがとうございます。よろしく、official documentationからArief

+0

時間の変動は小さいようですが、とにかく 'timeit'モジュールを使用してください。 –

+2

[浮動小数点数学は壊れていますか?](https://stackoverflow.com/questions/588004/is-floating-point -math-broken) –

+0

よろしく@Chris_Rands 'timeit'との違いは何ですか?私の重要な問題は、効率的なコードのためのより良い構文や戦術を理解し、選択する方法です。ありがとう – Arief

答えて

1

つまり
>>> 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 

:我々は、実行時間測定の精度について話すように努力するならば - 私たちはすべてを引き出すために数千に回単純な関数を反復するために制限副作用。

関連する問題