Performance implications of hoistServer with a "dynamic" runApp function?

101 views Asked by At

My webserver is written in an AppM :: ReaderT Env IO monad. The Env type, for the purpose of centralized auditing code, needs to know the request's path. Therefore, my hoistServer usage looks something like this:

\req respHandler -> 
  let application = serve apiProxy $ hoistServer apiProxy (\appm -> runAppM req appm) myServer
  in application req respHandler

Notice how the second argument to hoistServer depends on the incoming req.

What are the performance implications of doing something like this? Is the servant application going to get "re-created" for every incoming request?

Is there any other way to possibly write this code to make it more performant?

0

There are 0 answers