[racket] My toy web app's performance: Racket vs Perl vs Ruby

From: joshua at anwu.org (joshua at anwu.org)
Date: Fri Apr 13 16:19:54 EDT 2012

I tested each against the invoice URL for the stats I included, but I've had similar results from the customer and product lists.
It should be the same JSON data every time.  I didn't want to post the actual URI for fear that my server would suddenly get
pounded by an 'ab -c 20 -n 100' flood.  Computer geeks tend to be curious types... *smirk*

I didn't notice that Racket's total bytes transferred was so far off; I wonder about that too.  I wonder if it represents failed

Racket seems to be able to keep up with Perl/Starman with -c 1; both embarass Ruby/Unicorn, I'm sad to say.  It's only when
the number of concurrent requests get large that Perl begins to trounce Racket.  I suspect it might have more to do with
Starman vs Racket's server than Perl vs Racket.

Glad to know it's not that my first Racket program was terrible. :)


On Thu, Apr 12, 2012 at 06:30:35AM -0600, Ryan Culpepper wrote:
> What URL(s?) are you testing? It's hard to analyze the numbers below
> without knowing what they're measuring.

> Are you sure the "Failed requests" are really failures? A
> Stackoverflow answer suggests that these might be the result of a
> nondeterministic response length. (See
> http://stackoverflow.com/questions/579450.)
> It's odd that the total transferred for the Racket benchmark is
> almost an order of magnitude less than the totals for Perl and Ruby.
> It would help to see the actual URLs used in the tests to make sure
> this isn't an apples-to-oranges comparison.
> It would also be useful to run the benchmarks with "-c 1" to measure
> the pure sequential performance. I'm not familiar with the
> frameworks in question, but a brief scan suggests that Starman and
> Unicorn might be forking multiple OS-level workers, which would lead
> to more parallelism on multicore systems. Your Racket setup is
> limited to a single core.

Posted on the users mailing list.