解惑:关于 gin 的路由实现,前缀树?map?

weixin_38052602 2019-09-20 10:10:33
**复杂度**
* 前缀树 O(n)
* map O(1)

从复杂度上看 前缀树 是大于 map 的

那么gin使用前缀树只是为了降低内存占用吗?
...全文
197 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38080713 2019-09-20
  • 打赏
  • 举报
回复
weixin_38092066 2019-09-20
  • 打赏
  • 举报
回复
一方面是节省内存,更重要是方便查找,像`/user/:id`这种参数会变的路由用`map`就不太好实现了
weixin_38104763 2019-09-20
  • 打赏
  • 举报
回复
像下面这种场景,map也不太好实现 为了更具扩展性,每一层的节点按照priority排序,priority是节点的子节点(儿子节点,孙子节点等)注册的handler的数量,这样做有两个好处: - 被最多路径包含的节点会被最先评估。这样可以让尽量多的路由快速被定位。 - 有点像成本补偿。最长的路径可以被最先评估,补偿体现在最长的路径需要花费更长的时间来定位,如果最长路径的节点能被优先评估(即每次拿子节点都命中),那么所花时间不一定比短路径的路由长。下面展示了节点(每个-可以看做一个节点)评估的路径:从左到右,从上到下 可以看下这篇文章,讲得挺好的 [路由查找之Radix Tree](https://michaelyou.github.io/2018/02/10/%E8%B7%AF%E7%94%B1%E6%9F%A5%E6%89%BE%E4%B9%8BRadix-Tree/)
weixin_38115771 2019-09-20
  • 打赏
  • 举报
回复
感谢
weixin_38061494 2019-09-20
  • 打赏
  • 举报
回复
没有人讨论吗
weixin_38072180 2019-09-20
  • 打赏
  • 举报
回复
没人?

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧