I'm coming across a few situations where I would like to use routing to change some Is_Active
fields in my database but I'm curious about performance.
Let's have a route handler as so:
func testHandler(r *mux.Router) {
r.HandleFunc("/test/{status}" statusHandler).Methods("GET")
}
Now that parameter will only ever be 0 or 1, unless the user tries something else but either way nothing will happen unless it's 0 or 1. My question is, is it faster to parse the string into a boolean which would involve bringing in the strconv
package or would it be faster to just do a switch on the string?
Example of both:
func statusHandler(w http.ResponseWriter, r *http.Request) {
v := mux.Vars(r)
active, err := strconv.ParseBool(v["status"])
// Handle err
if active {
// Do something
} else {
// Do something else
}
}
or
func statusHandler(w http.ResponseWriter, r *http.Request) {
v := mux.Vars(r)
switch v["status"] {
case "0":
// Do something
case "1":
// Do something else
default:
// Throw 500 Error
}
}
You could see the source code of ParseBool
here. It uses switch too but with more cases. If the compiler inlines its code it, speed should be very similar to your code. If you want a definite answer you should benchmark different cases.
In general I discourage you from paying attention to this small details. It's just matter of some nano seconds but it make your codes more difficult to understand. Begin optimizations with profiling your code to find hotspots that take a lot of time and fix them.