Hi Alan,

Thanks for reaching out on the Pedestal mailing list!
Most web benchmarks care more about throughput and concurrent connection 
than latency, but sadly, nearly all benchmarks show these measurements as 
scalars instead of distributions.  The "errors" number is the number of 
requests that resulted in a server error (because of 
overload/mishandling).  A robust server that correctly understands 
back-pressure and can efficiently process requests on a queue should result 
in no errors, assuming that it can process the queued requests at the rate 
in which they're being received.

The "keepalive" flag refers to TCP keepalive, which will affect speed and 
connection timeout.

While I'm not aware of any benchmark between Pedestal and Go, I would be 
highly skeptical of such a benchmark.  Web benchmarks are often very 
misleading - they represent an application you'd never write, integrated 
into a server in a way you'd never do, just to get the highest overall 
number possible.  I would instead encourage you to look for measurements 
related directly to the quality attributes you care about, for the specific 
pieces of your overall application.  I'd also think about what you're 
really trying to optimize.

With Clojure you get the power of Lisp - you get to use go-channels, 
property-based generative testing, pattern matching, logic programming - 
all as libraries.  You can extend the language however you need, to build 
the most efficient system.  Hell, you can even write directly to the LLVM 
<https://github.com/halgari/mjolnir> compiler to get bare-metal speed 
(again, just a library).  You get the power and speed of interactive 
development, with the focus of small, composable, functional units (first 
class functions, immutable data structures, protocols).
I recently needed to do very fast binary processing for a wire protocol, 
and I was able to utilize Netty within Clojure to do the entire thing 
off-heap (no GC impact), and with native byte handling - Clojure gives you 
immediate access to the powerful library ecosystem on the JVM.  You can 
even connect your editor to a running system to inspect, debug, evolve, and 
patch it.

While Golang's community is growing and great libraries are appearing in 
the ecosystem (Pedestal's router 
<https://github.com/pedestal/pedestal/pull/330> was heavily influenced by 
httprouter), the language and runtime aren't nearly as powerful as Clojure, 
for me.  I have far greater flexibility and power with Clojure, and the 
opportunity to optimize my application and process where it matters most.

We benchmark Pedestal against other web libraries with real production 
systems.  In every benchmark we've done so far, Pedestal has come out on 
top.  We also look at more than just runtime performance characteristics - 
we consider code size, system complexity, etc.
Additionally Pedestal is secure by default - all of the best security 
practices are automatically enabled in Pedestal (you have to explicitly 
asked for them to be turned off).  We're also only one of two Clojure web 
systems that is truly asynchronous.  You can also take a look at Pedestal's 
other notable features 
<https://github.com/pedestal/pedestal#notable-capabilities>.

Hope this helps!  Reach out with any other questions you may have.

Regards,
Paul

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to