私はコードを最適化しようとしているので、私はギガバイトのテキストを読む必要があります。これを行うと、私の問題では辞書を使うのがif-testよりも早いことがわかりました。 ipythongの%はtimeitを使用してPythonの2回のif-testよりもはるかに早い検索が辞書でなぜですか?
check = {'R':'-', 'F':'+'}
seqs = ['R', 'F']*100
def check1():
for entry in seqs:
if entry == 'R':
strand = '-'
if entry == 'F':
strand = '+'
def check2():
for entry in seqs:
strand = check[entry]
私は辞書で調べることは2であれば、テスト使用しての2倍の速さよりもわずかであることを確認:テストがあれば、とても基本的なもの、私がしたので
In [63]: %timeit check1()
10000 loops, best of 3: 38.8 us per loop
In [64]: %timeit check2()
100000 loops, best of 3: 16.2 us per loop
をパフォーマンスの違いは期待できません。これはよく知られていますか?なぜこれがそうだと誰が説明できますか?
UPDATE私は2つの以上の機能だけでなく、check3()は以下の私の実際のコードの実行時間に影響を与える、との合計時間には影響がありませんどのようにチェック
。だから、辞書で得られたブーストは、実世界の例では「R」と「F」の値をファイルから絶えず読み直す必要があります。このコードはボトルネックの一部ではありません。
とにかく答えてくれてありがとう!
'chedict'は未定義の変数です。正確にはタイミングはついていますか? –
x == yは実際には関数呼び出し( 'x .__ eq__')であり、2つの関数呼び出しはpythonのdictルックアップよりも高価です。 –
S.Lott:申し訳ありませんがタイプミスです。私はテキストを更新しました。 – Viktiglemma