第506章 还在改! (第2/3页)
个问题,轮密钥的生成速度,SM4用的是32轮非线性迭代,每轮都要查S盒,查S盒的开销在单条数据上可以忽略不计,但放到实时推送的场景里,每秒上千条数据包同时解密,延迟就堆起来了。
他试了三种优化方案,第一种是预计算S盒展开表,把查表操作变成直接索引,快了,但内存占用翻了一倍,第二种是把轮密钥生成提前到数据包到达之前,做预热,延迟降了,但遇到密钥轮换的时候会有一个200毫秒的断档。
第三种他还没试完。
老周进来了,搪瓷缸,铁观音换成了新的一泡,颜色比昨天深。
他在方远旁边坐下,没看屏幕,看方远。
"延迟多少?"
"单条0.8毫秒,并发一千条的时候峰值到47毫秒。"
"要求呢?"
"实时推送延迟不超过20毫秒。"
老周喝了一口茶。
"差一倍多。"
"嗯。"
"第三种方案是什么?"
方远把屏幕切到另一个窗口,一个架构草图,他自己画的,线条很乱,但逻辑清楚。
"异步流水线,把解密和上报拆成两级,解密在前端做,上报在后端排队,两级之间用环形缓冲区,这样解密不需要等上报完成,上报也不需要等解密。"
老周看了那个草图。
"环形缓冲区溢出呢?"
"设了阈值,到80%触发降速。"
老周没说好也没说不好,他端起搪瓷缸,又喝了一口,铁观音的味道在调试间里飘着,比昨天的浓。
"跑一下。"
方远点了一下头
(本章未完,请点击下一页继续阅读)