質問

私はデイビッド・ビーズリーのPythonリファレンスブックを読んでいます、そして彼は主張します:

たとえば、多くの平方根操作を実行している場合、「Math.sqrt(x)」を入力するのではなく、「Math Import SQRT」と「SQRT(X)」を使用する方が速いです。

と:

メソッドまたはモジュールの検索を頻繁に使用することを含む計算の場合、最初に実行する操作を配置することにより、属性のルックアップを排除する方がほとんど常に優れています。

私はそれを試してみることにしました:

最初()

def first():
    from collections import defaultdict
    x = defaultdict(list)

2番目()

def second():
    import collections
    x = collections.defaultdict(list)

結果は次のとおりです。

2.15461492538
1.39850616455

これらのような最適化は、おそらく私には関係ありません。しかし、私は、なぜビーズリーが書いたことの反対が真実であるようになるのか興味があります。そして、1秒の違いがあることに注意してください。これは、タスクが些細なことであることを考えると、それは非常に重要です。

なぜこうなった?

アップデート:

私は次のようなタイミングを取得しています:

print timeit('first()', 'from __main__ import first');
print timeit('second()', 'from __main__ import second');

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top