前言

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