# Sux Static route http router that considers the request method Useful for serving server-side rendered content. ## How ```go package main import ( "code.icod.de/dalu/sux" "io" "net/http" ) func main() { r := sux.New() r.GET("/", Hello) r.GET("/simple", Simple) http.ListenAndServe(":8080", r) } func Hello(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "hello") } func Simple(w http.ResponseWriter, r *http.Request) { name := r.URL.Query().Get("name") io.WriteString(w, "hello "+name) } ``` ### Performance ``` darko@arch ~ $ wrk -c1000 -t8 -d30s http://inuc:8080/ Running 30s test @ http://inuc:8080/ 8 threads and 1000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 7.08ms 3.02ms 64.38ms 89.40% Req/Sec 18.24k 2.11k 24.06k 73.88% 4260394 requests in 30.00s, 491.63MB read Requests/sec: 142025.60 Transfer/sec: 16.39MB darko@arch ~ $ wrk -c1000 -t8 -d30s http://inuc:8080/simple?name=Darko Running 30s test @ http://inuc:8080/simple?name=Darko 8 threads and 1000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 8.11ms 3.84ms 243.61ms 89.96% Req/Sec 16.01k 2.20k 23.88k 72.87% 3723315 requests in 30.00s, 454.51MB read Requests/sec: 124116.94 Transfer/sec: 15.15MB ``` Compared to https://github.com/julienschmidt/httprouter ``` darko@arch ~ $ wrk -c1000 -t8 -d30s http://inuc:8080/ Running 30s test @ http://inuc:8080/ 8 threads and 1000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 7.14ms 3.13ms 74.06ms 89.99% Req/Sec 18.18k 2.19k 23.31k 75.88% 4224358 requests in 30.00s, 487.47MB read Requests/sec: 140826.15 Transfer/sec: 16.25MB darko@arch ~ $ wrk -c1000 -t8 -d30s http://inuc:8080/simple/Darko Running 30s test @ http://inuc:8080/simple/Darko 8 threads and 1000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 7.78ms 3.40ms 60.03ms 88.79% Req/Sec 16.55k 1.86k 19.95k 66.95% 3873629 requests in 30.00s, 472.86MB read Requests/sec: 129131.98 Transfer/sec: 15.76MB ``` Compared to https://github.com/gocraft/web ``` darko@arch ~ $ wrk -c1000 -t8 -d30s http://inuc:8080/ Running 30s test @ http://inuc:8080/ 8 threads and 1000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 9.07ms 4.58ms 420.89ms 91.40% Req/Sec 14.42k 2.28k 25.00k 80.03% 3309152 requests in 30.00s, 378.70MB read Requests/sec: 110315.36 Transfer/sec: 12.62MB darko@arch ~ $ wrk -c1000 -t8 -d30s http://inuc:8080/simple Running 30s test @ http://inuc:8080/simple 8 threads and 1000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 9.86ms 4.00ms 66.98ms 87.79% Req/Sec 13.05k 1.65k 17.52k 69.71% 3055899 requests in 30.00s, 375.95MB read Requests/sec: 101874.46 Transfer/sec: 12.53MB ``` Compared to https://github.com/gomango/mux ``` darko@arch ~ $ wrk -c1000 -t8 -d30s http://inuc:8080/ Running 30s test @ http://inuc:8080/ 8 threads and 1000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 9.22ms 12.73ms 235.88ms 84.36% Req/Sec 13.78k 1.77k 25.52k 74.17% 3242004 requests in 30.00s, 377.20MB read Socket errors: connect 0, read 0, write 0, timeout 10 Requests/sec: 108078.84 Transfer/sec: 12.57MB darko@arch ~ $ wrk -c1000 -t8 -d30s http://inuc:8080/simple Running 30s test @ http://inuc:8080/simple 8 threads and 1000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 16.24ms 14.39ms 150.41ms 56.30% Req/Sec 7.77k 593.31 9.78k 68.20% 1841839 requests in 30.00s, 226.59MB read Requests/sec: 61402.97 Transfer/sec: 7.55MB ``` Apples and Oranges but not quite Hardware http://www.intel.com/content/www/us/en/nuc/nuc-kit-d54250wykh.html