yuanrongxi / razor

A google's congestion Control Algorithm
MIT License
355 stars 156 forks source link

减少空循环,用 std::map 替换 skiplist #67

Closed pingcoool closed 7 months ago

pingcoool commented 7 months ago

proxy_bulid_feelback_packet() 方法中,107 行的 SKIPLIST_FOREACH 仍然比较耗时,在不满足iter->key.i64 >= proxy->wnd_start_seq 的条件下,foreach 会出现大量的空循环。实测把 skiplist 替换成 std::map,然后在 107 行之前使用 std::map::lower_bound(proxy->wnd_start_seq) 的方式找到遍历的起点,能够获得更好的性能。

yuanrongxi commented 7 months ago

一般这个地方未被反馈的包数量不会太多,能否给出对应的profile分析数据?这个库是C的库,不能直接引入C++ stl,但可以尝试使得skiplist有用lower_bound功能。

yuanrongxi commented 7 months ago

fixed