%time、%timeit、%%time、%timeitの違い(ipythonでコード実行時間を表示する魔法コマンド)


1、%time、%timeit、%time、%timeitの比較
%time:行モードでコードを1回実行するのにかかる時間.%%time:ユニットモードでコードを1回実行するのにかかる時間.
%timeit:行モードでコードブロックを何回か実行し、最適な結果を取ります.%%timeit:ユニットモードで、コードブロックを何回か実行し、最適な結果をとる.
1)注記:
  • 1>行モード:後続のコードのみをテストします.つまり、改行文字を使用してコードブロックを追加してテストすることはできません.
  • 2>ユニットモード:コードブロックのテストに使用します.後続のコードだけでなく、改行で追加した残りのコードは、全体としてテストされます.ここで、第1行目のコードは、設定コード(実行されたがカウントされていない)として使用され、ユニットの本体はカウントされている.ユニット本体は、設定コードで作成された任意の変数にアクセスできます.

  • 2)例:
    In[102]: %%timeit  #       
    	...: for num in range(1, 10000):
    	...:     result = 0
    	...:     for factor in range(1, num):
    	...:         if num % factor == 0:
    	...:             result += factor
    	...:     if result == num:
    	...:         print(num)
    	...: 
    6
    28
    496
    8128
    6
    28
    496
    8128
    6
    28
    496
    8128
    6
    28
    496
    8128
    6
    28
    496
    8128
    6
    28
    496
    8128
    6
    28
    496
    8128
    6
    28
    496
    8128
    7.57 s ± 311 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
    
    In[102]: %timeit  #      。          ,            
        ...: for num in range(1, 10000):
        ...:     result = 0
        ...:     for factor in range(1, num):
        ...:         if num % factor == 0:
        ...:             result += factor
        ...:     if result == num:
        ...:         print(num)
        ...: 
    6
    28
    496
    8128
    

    2、%timeitと%timeitの具体的なパラメータ:
    timeit[-n-r[-t|-c]-q-p-o]オプション:-n:ループで与えられた文次を実行します.指定されていない場合は、十分な精度値が得られると判断します.
    -r:繰り返し回数、各繰り返し回数は個のサイクルからなり、最適な結果が得られる.デフォルト:7
    -t:timeを使用する.timeは時間を測定します.これはUnixのデフォルト値です.この機能は、CPUユーザ以外の実際の時間を測定します.
    -c:timeを使用する.clockは時間を測定します.これはWindowsのデフォルト設定で、実際の時間を測定します.Unixでresourceを使用します.getrusageはCPUユーザ時間に代わって返される.
    -p:ビットの精度を使用してタイミング結果を表示します.デフォルト:3
    -q:結果を印刷しません.
    -o:チェックのために変数に格納できるTimeitResultを返します.