apisix icon indicating copy to clipboard operation
apisix copied to clipboard

help request: Using the radixtree.new() method in a similar way has a performance difference of ten times

Open dayongi opened this issue 6 months ago • 2 comments

Description

I added a custom logic to the _M.match method in radixtree_host_uri.lua in APISIX to simulate how long it takes to build a radix tree with 1000 routes. At the same time, I used Python to call the Admin API of APISIX and added 1000 routes. When I executed curl -X GET http://localhost:9080/foo, I was surprised to find that with the same number of routes, when using a similar method to call radixtree.new to build a radixtree, the performance difference between the two was as much as ten times. Why is this?

  • Use python to call the Admin API of APISIX and added routes. image

  • Added custom logic of radixtree_host_uri.match() image

  • Test 企业微信截图_0c63daae-f47d-45fc-9fb0-7e3eb138bf61 企业微信截图_67025e58-4cc7-4161-9b33-0438af73d216

Environment

  • APISIX version (run apisix version): 3.9.1
  • Operating system (run uname -a): Linux localhost.localdomain 5.14.0-427.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Feb 23 04:45:07 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
  • OpenResty / Nginx version (run openresty -V or nginx -V): nginx version: openresty/1.25.3.2
  • etcd version, if relevant (run curl http://127.0.0.1:9090/v1/server_info): {"etcd_version":"3.4.0","boot_time":1723460812,"hostname":"","id":"ba56a241-98c4-433a-b1c9-ddcead159944","version":"3.9.1"}
  • APISIX Dashboard version, if relevant: No
  • Plugin runner version, for issues related to plugin runners: Not used
  • LuaRocks version, for installation issues (run luarocks --version): /usr/bin/luarocks 3.9.2

dayongi avatar Aug 13 '24 00:08 dayongi