The 185-Microsecond Type Hint
3 months ago
- #Roughtime
- #Performance Optimization
- #Clojure
- 代码中一个'微不足道'的改动,使得Clojure版Roughtime实现的吞吐量提升了13倍。
- Roughtime协议采用加密证明实现安全时间同步,服务器会返回包含随机数和时间戳的签名证书。
- 服务器的核心工作包括请求排队、跨16个版本的协议兼容、递归式Merkle树哈希计算和Ed25519签名。
- 初始基准测试显示200微秒的响应时间中,90%耗时来自计算字节数组长度的简单代码行。
- 通过为`alength`函数添加类型提示,编码时间从31微秒降至4微秒,避免了动态分派和反射开销。
- 端到端测试显示吞吐量从每秒19,959次跃升至264,316次响应,提升达13倍。
- 这种意外加速可能源于反射调用路径在高负载下的竞争减少。
- 经验启示:即便是'简单'代码也可能成为瓶颈,而类型提示能显著优化Clojure性能。