我如何使用 timeit
来比较我自己的函数的性能,例如“ insertion_sort
”和“ tim_sort
”?
原文由 Neemaximo 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果你想在交互式 Python 会话中使用 timeit
,有两个方便的选项:
%timeit
特殊功能: In [1]: def f(x):
...: return x*x
...:
In [2]: %timeit for x in range(100): f(x)
100000 loops, best of 3: 20.3 us per loop
__main__
导入它们来访问之前在交互式会话期间定义的函数和其他名称: >>> def f(x):
... return x * x
...
>>> import timeit
>>> timeit.repeat("for x in range(100): f(x)", "from __main__ import f",
number=100000)
[2.0640320777893066, 2.0876040458679199, 2.0520210266113281]
原文由 Sven Marnach 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
timeit 的工作方式是运行设置代码一次,然后重复调用一系列语句。所以,如果你想测试排序,需要小心一些,这样就地排序的一次传递不会影响已经排序数据的下一次传递(当然,这会让 Timsort 真正闪耀,因为它表现最好当数据已经部分排序时)。
以下是如何设置排序测试的示例:
请注意,该系列语句在每次传递时都会生成未排序数据的新副本。
此外,请注意运行测量套件七次并仅保留最佳时间的计时技术——这确实有助于减少由于系统上运行的其他进程而导致的测量失真。
这些是我正确使用 timeit 的技巧。