前言
time.Sleep()
模型预设
// 不同策略下的已知量
v0 ------ 客户端到服务端的平均下载速度
t0 ------ 某个文件在v0速度下传输完成的时间
n ------ 文件分段传输的段数
v1 ------ 策略1下的速度
t2 ------ 策略2下的时间
p% ------ 策略3下的比率
// 求解量
ts ------ 所求得的每段睡眠时间
求以下三种策略下的ts:
1. 限速为v1
ts = (v0t0 - t0)/(v1n)
v0t0 = (n*ts + t0)v1
推导:
v0t0 = v1*(t)
t = v0t0/v1 = n*ts + t0
则ts = t/n = (v0t0 - t0)/(v1n),
2. 限时t2
ts = (t2-t0)/n
ts *n +t0 = t2
推导:
ts *n +t0 = t2
则ts = (t2-t0)/n
3. 限制客户端速率为原本的p%
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