赞
踩
有的软件需要付费加速(实际上是不付费限速),这种逻辑在服务端怎么设计呢?很简单, time.Sleep()
// 不同策略下的已知量
v0 ------ 客户端到服务端的平均下载速度
t0 ------ 某个文件在v0速度下传输完成的时间
n ------ 文件分段传输的段数
v1 ------ 策略1下的速度
t2 ------ 策略2下的时间
p% ------ 策略3下的比率
// 求解量
ts ------ 所求得的每段睡眠时间
求以下三种策略下的ts:
结论: ts = (v0t0 - t0)/(v1n)
分析:
限速前后,总量一致,即v0t0 = (n*ts + t0)v1
推导:
v0t0 = v1*(t)
t = v0t0/v1 = n*ts + t0
则ts = t/n = (v0t0 - t0)/(v1n),
结论: ts = (t2-t0)/n
分析:
限速前后,存在时间差异,即ts *n +t0 = t2
推导:
ts *n +t0 = t2
则ts = (t2-t0)/n
结论: ts = ((100*t0/p)-t0)/n
分析:
限速前后,平均速度作比为p%, 即v3/v0 = p%
推导:
v3 = (v0t0)/ (ts*n + t0)
p% = v3/v0 = t0/(ts*n +t0)
则ts = ((100*t0/p)-t0)/n
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。