匹配HTTP路由的最佳算法

时间:2014-07-16 13:11:18

标签: algorithm http routing

我正在构建自己的http路由器,我想知道哪种算法最适合以某种数据格式注册路径,然后以最快的方式将其与http路由请求匹配。我做了一个Radix Tree,速度相当快,距离路线不到1毫秒,但我没有注册大量路线,我确信(无知)有路线更快的方式。

例如,让我们采取一些uri路线:

  • /你好
  • /搜索
  • /支撑
  • /用户/简档/(字符串)
  • /用户/信息
  • /后/(INT)/视图/(字符串)

我的Radix Tree正在这样做:

    /                
    ├s               
    |├earch         
    |└upport
    |      
    ├user\           
    |    └info
    |    └profile/
    |             └:string
    ├post\       
    |     └:int\/ 
    |          └/view/
    |                └/:string
    └hello

你对这棵树有什么看法,有什么我可以做得更好吗?

感谢您阅读

1 个答案:

答案 0 :(得分:2)

Radix Tree实际上是实现它的好方法。根据您实现节点的方式,您可以以某些空间为代价加快速度。

如果将节点定义为:

Class Node
{
    public string Name;
    public List<Node> Children;
}

然后,您必须对子项进行顺序搜索才能找到匹配的段。如果任何节点的子节点数相对较小,那就没问题了。如果每个节点有大量子节点,那么您可能希望将List<Node>替换为Dictionary<string, Node>。这将加速查找。

除此之外,我无法为您描述的情况考虑更合适的数据结构。