这是我的准则
from sortedcontainers import SortedList, SortedSet, SortedDict
import timeit
import random
def test_speed1(data):
SortedList(data)
def test_speed2(data):
sorted_data = SortedList()
for val in data:
sorted_data.add(val)
data = []
numpts = 10 ** 5
for i in range(numpts):
data.append(random.random())
print(f'Num of pts:{len(data)}')
sorted_data = SortedList()
n_runs=10
result = timeit.timeit(stmt='test_speed1(data)', globals=globals(), number=n_runs)
print(f'Speed1 is {1000*result/n_runs:0.0f}ms')
n_runs=10
result = timeit.timeit(stmt='test_speed2(data)', globals=globals(), number=n_runs)
print(f'Speed2 is {1000*result/n_runs:0.0f}ms')
enter image description here
测试speed2的代码应该需要12毫秒(我检查了他们报告的设置)。为什么它需要123毫秒(慢10倍)???test_speed1运行在15毫秒(这是有意义的)
我在康达跑步。这是他们概述性能https://grantjenks.com/docs/sortedcontainers/performance.html的地方
2条答案
按热度按时间a8jjtwal1#
您可能没有在与他们相同的条件下执行基准测试:
因此,基准测试结果是不可比较的,您无法得出任何有关性能的结论(当然也不能得出“sortedcontainers太慢”的结论)。
性能仅与给定的执行上下文相关,他们仅表示他们的解决方案相对于其他并发解决方案更快。
如果您确实希望在计算机上执行基准测试,请遵循文档中给予的instructions。
fzsnzjdm2#
init()使用Python高度优化的sorted()函数,而add()不能。这就是speed2比speed3快的原因。
这是我从sortedcontainers库的开发人员那里得到的答案。