2016-08-24 15 views
0

私はPythonのシリアルポートからサンプリングを取得したいと思います。しかし、私はそれの速度を知るためのテストコードを実行する場合、Pythonは私に異なる値を与える!それは通常約24000回/秒です。しかし、いつかこのコードはわずか14000回実行されます。大きな違いの理由は何ですか?私が何をすればいいのですか?Pythonの異なる実行速度

これは、テスト実行速度のサンプルコードである:

import time 

def g(start=0, stop=5, step=1): 
while start < stop: 
    yield start 
    start += step 


t1 = time.time() 
t2 = t1 + 1 

for item in g(10,1000000,1): 
    print(item) 
    t1 = time.time() 
    if t1 > t2: 
     break 

答えて

3

は、このようなアプリケーションのために設計されたtimeitモジュールを調べます。ベンチマークは、非常に制御された条件下で繰り返し実行できるようなものでなければなりません。 timeitは、コードを何度も実行し、最良の結果をもたらします。通常、パフォーマンスが低下するのは、コンピュータがベンチマークと同時に他のタスクを実行していることを示します。

0

Pythonでコードを実行する際には、常に時間差があります。その理由は、CPU givesがスクリプトを実行するためです。あなたは試行のカップルをして、それの平均時間を計算する必要があります。

0

私は最初の実行時に15000 @だったし、その後28000 arroundの一般的結果は、主に

  • あなたのCPUの負荷
  • キャッシュヒット/ミス
  • RAMアクセス時間
の依存

しかし、あなたの場合、それは実行時間の大半を占めるプリントです。したがって、stdoutへの印刷アクセス時間が変動の原因です。

for item in g(10,100000000,1): 
#print(item) 
t1 = time.time() 
if t1 > t2: 
    print(item) #print only the last 
    break 

は、この試します