1

次のようなコードがあります。

def somefunction(somelist):
    for item in somelist:
        if len(item) > 10:
            do something
        elif len(item) > 6:
            do something
        elif len(item) > 3:
            do something
        else:
            do something

len(item) を複数回呼び出しているので、この方法では効率が悪いのでしょうか? 次のようにコードを書くのが望ましいでしょうか、それともパフォーマンスがまったく同じですか?

def somefunction(somelist):
    for item in somelist:
        x = len(item)
        if x > 10:
            do something
        elif x > 6:
            do something
        elif x > 3:
            do something
        else:
            do something
4

5 に答える 5

1

Python は、(PyPy を使用していない限り) 他のほとんどの言語のように自動的に最適化しないため、2 番目のバージョンの方がおそらく高速です。しかし、時間がかかるitemカスタムlen実装がない限り、おそらくそれほどスピードアップしないでしょう。これは、プロファイリングが問題を示した後にタイトな内部ループ用に予約する必要がある一種のマイクロ最適化です。

于 2013-04-02T12:44:37.010 に答える