Closed pingcoool closed 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) 的方式找到遍历的起点,能够获得更好的性能。
iter->key.i64 >= proxy->wnd_start_seq
std::map::lower_bound(proxy->wnd_start_seq)
一般这个地方未被反馈的包数量不会太多,能否给出对应的profile分析数据?这个库是C的库,不能直接引入C++ stl,但可以尝试使得skiplist有用lower_bound功能。
fixed
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)
的方式找到遍历的起点,能够获得更好的性能。