优化前后的加速比
按模型,优化前 90、优化后 30,speedup(90, 30) 交回几?
贯穿本节的并发模型(判题机 0.25 核有 GIL、答案不靠时序,这是它的确定模型,见 spine.py):高并发服务器搭起来后要选架构、加锁护状态、连接池/队列、压测、测吞吐延迟、定位竞争。
定位竞争:bottleneck(等待表)=等最久的资源、n_contended(等待表, 阈值)=热点数、speedup(前, 后)=加速比、worth_optimizing=有没有更快。
def bottleneck(waits):
"""waits: {资源: 等待时长};交回等最久的那个资源。"""
best = None
for k in waits:
if best is None or waits[k] > waits[best]:
best = k
return best
def n_contended(waits, threshold):
"""等待超过阈值的资源有几个(竞争热点)。"""
return sum(1 for k in waits if waits[k] > threshold)
def speedup(before, after):
"""优化前后的加速比(整数)。"""
return before // after
def worth_optimizing(before, after):
"""优化后更快了吗。"""
return after < before
print(speedup(90, 30))
全部评论