Golang中使用Gorilla/Mux是否不合适?
Golang中使用Gorilla/Mux是否不合适? 我不想重蹈使用jQuery时的覆辙:投入大量时间学习自认为有用、能让工作更轻松的东西,结果几周辛苦后发现它毫无用处,甚至因拖慢网站速度而产生负面影响。那么,我是否应该使用Gorilla/Mux来处理URL,而不是net/http?这会影响我的网站性能/速度吗?Gorilla/mux能实现的功能,能否用原生的Golang net/http包来完成?
该多路复用器的实现基于一个for循环,其性能不如httprouter。
更多关于Golang中使用Gorilla/Mux是否不合适?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
/page/:name/:oid 在 httprouter 中,https://github.com/julienschmidt/httprouter#usage。
Mux 比 httprouter 慢 100 多倍,mux 使用 for 循环实现,而 httprouter 使用基数树实现。
好的,谢谢。那么我该如何使用 HTTP 路由器来实现 mux 给我的那种 URL 呢?比如,像 page/{pagename}/{id} 这样的 mux URL 是如何用 HTTP 路由器实现的?
我会从标准库的默认路由器开始,先熟悉使用它, 如果需要更复杂的匹配功能,再转向 gorilla/mux。 两者都稳定可靠、性能出色且被广泛使用。
“Mux 比 httprouter 慢 100 多倍”
这在微秒级别意味着什么?
我坚持我之前的说法,即两者都足够快,并且在实际应用中,与网络和数据库延迟、模板扩展、JSON 序列化等相比,路由器对 HTTP 延迟的贡献微不足道。
而且,与用 Python、Ruby 等编写的框架相比,两者的速度都快得惊人。
我同意路由器消耗的时间比例很小,但在多路复用器性能差距达到100倍之后,它消耗的资源可能与写入日志(logrus、zap)几乎相同。
我查看了其他人的性能测试数据,两者的差异是128倍。例如,chi中其他路由器的性能倍数与我自己的测试结果相同。
junelabs/brouter-benchmark
http基础库测试代码,一部分代码来自httprouter的测试代码,一部分代码来自gorouter的测试代码 - junelabs/brouter-benchmark


