set
とlist
の両方についてin
文のパフォーマンスを評価しようとしています。私はモジュールtime
でそれを行うことができますが、timeit
モジュールを試してみたいと思います。 は、だから私のコードは次です:リスト内の文を評価し、timeitモジュールを使用して設定した奇妙な結果
from timeit import Timer
def func_to_test(val, s):
return val in s
if __name__ == "__main__":
val = 346
n = 100000
s = set([x for x in range(n)])
l = [x for x in range(n)]
list_timer = Timer("func_to_test(%s, %s)" % (val, l), "from __main__ import func_to_test")
set_timer = Timer("func_to_test(%s, %s)" % (val, s), "from __main__ import func_to_test")
print(list_timer.timeit(100))
print(set_timer.timeit(100))
出力は次のようになります。
0.1953735960000813
0.6675883569996586
しかしlist
ため、なぜin
文がset
よりも優れた性能を "持っていますか"? 私はそれがないことを知っていますが、なぜtimeit
モジュールでこれらの結果がありますか?
この場合の定数係数は、より大きいnを使用して試してみてください。小さなn – Natecat