我如何使用timeit来比较我自己的函数(如“insertion_sort”和“tim_sort”)的性能?
当前回答
让我们在以下每个语句中设置相同的字典并测试执行时间。
setup参数基本上是设置字典
编号是运行代码1000000次。不是设置,而是stmt
当你运行这个时,你会发现index比get快得多。您可以多次运行它来查看。
这段代码基本上是试图从字典中获取c的值。
import timeit
print('Getting value of C by index:', timeit.timeit(stmt="mydict['c']", setup="mydict={'a':5, 'b':6, 'c':7}", number=1000000))
print('Getting value of C by get:', timeit.timeit(stmt="mydict.get('c')", setup="mydict={'a':5, 'b':6, 'c':7}", number=1000000))
这是我的结果,你的结果会有所不同。
按索引:0.20900007452246427
get: 0.54841166886888
其他回答
简单地传递你的整个代码作为timeit参数:
import timeit
print(timeit.timeit(
"""
limit = 10000
prime_list = [i for i in range(2, limit+1)]
for prime in prime_list:
for elem in range(prime*2, max(prime_list)+1, prime):
if elem in prime_list:
prime_list.remove(elem)
"""
, number=10))
# Генерация целых чисел
def gen_prime(x):
multiples = []
results = []
for i in range(2, x+1):
if i not in multiples:
results.append(i)
for j in range(i*i, x+1, i):
multiples.append(j)
return results
import timeit
# Засекаем время
start_time = timeit.default_timer()
gen_prime(3000)
print(timeit.default_timer() - start_time)
# start_time = timeit.default_timer()
# gen_prime(1001)
# print(timeit.default_timer() - start_time)
这很有效:
python -m timeit -c "$(cat file_name.py)"
如果你想快速比较两个代码/函数块,你可以这样做:
import timeit
start_time = timeit.default_timer()
func1()
print(timeit.default_timer() - start_time)
start_time = timeit.default_timer()
func2()
print(timeit.default_timer() - start_time)
我发现使用timeit最简单的方法是从命令行:
鉴于test.py:
def InsertionSort(): ...
def TimSort(): ...
像这样运行timeit:
% python -mtimeit -s'import test' 'test.InsertionSort()'
% python -mtimeit -s'import test' 'test.TimSort()'