Hi,<div><br></div><div>Great project and benchmarks.  I, too, want to use Racket Scheme for more serious projects, and even have my company&#39;s go ahead to incorporate it into our service architecture.   I&#39;m pursuing the mongrel2 option, and I just produced a beta mongrel2 racket adapter in pursuit of that goal.  <a href="https://github.com/neomantic/racket-mongrel2-adapter">https://github.com/neomantic/racket-mongrel2-adapter</a>.  I&#39;ll use your work to give them some performance benchmarks against mongrel2.  Thanks!</div>
<div><br></div><div>Chad</div><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Apr 11, 2012 at 5:03 PM,  <span dir="ltr">&lt;<a href="mailto:joshua@anwu.org" target="_blank">joshua@anwu.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Racketeers,<br>
<br>
I&#39;m new to the language, and loving it.  I&#39;m having trouble getting good performance out of my little toy web app, however.<br>
<br>
I wrote this fake billing app to play with some new languages (like Racket) and some other webdev ideas I&#39;ve had (like client-side<br>
templating with jQuery and mustache).  As such, I have the same JSON api written in Perl, Ruby, and Racket (working on node.js<br>
and Haskell).  Perl runs under Dancer and Starman, ruby under Sinatra and Unicorn, and Racket under nohup and its own included webserver.<br>
All are running on the same machine.  Each connects to a postgres db, executes some queries from a config file, and returns JSON<br>
to the client.<br>
<br>
I&#39;ve been running apache bench against all three, and the performance of Racket vs Perl and Ruby has been... disheartening.  I<br>
compiled the racket code with &#39;raco exe&#39; before running it, but Perl and Ruby both blow it away.  The racket executable also<br>
seems to grab and hold a lot of memory, even though I told it to be stateless.  It also tends to have failures.<br>
<br>
ab -c 20 -n 10000 &lt;uri&gt;<br>
<br>
<br>
Perl:<br>
<br>
Concurrency Level:      20<br>
Time taken for tests:   86.100 seconds<br>
Complete requests:      10000<br>
Failed requests:        0<br>
Write errors:           0<br>
Total transferred:      88150000 bytes<br>
HTML transferred:       86300000 bytes<br>
Requests per second:    116.14 [#/sec] (mean)<br>
Time per request:       172.199 [ms] (mean)<br>
Time per request:       8.610 [ms] (mean, across all concurrent requests)<br>
Transfer rate:          999.82 [Kbytes/sec] received<br>
<br>
<br>
Ruby:<br>
<br>
Concurrency Level:      20<br>
Time taken for tests:   102.914 seconds<br>
Complete requests:      10000<br>
Failed requests:        0<br>
Write errors:           0<br>
Total transferred:      88480000 bytes<br>
HTML transferred:       86050000 bytes<br>
Requests per second:    97.17 [#/sec] (mean)<br>
Time per request:       205.827 [ms] (mean)<br>
Time per request:       10.291 [ms] (mean, across all concurrent requests)<br>
Transfer rate:          839.60 [Kbytes/sec] received<br>
<br>
<br>
Racket:<br>
<br>
Concurrency Level:      20<br>
Time taken for tests:   139.059 seconds<br>
Complete requests:      10000<br>
Failed requests:        687<br>
   (Connect: 0, Receive: 0, Length: 687, Exceptions: 0)<br>
Write errors:           0<br>
Total transferred:      9421469 bytes<br>
HTML transferred:       7100095 bytes<br>
Requests per second:    71.91 [#/sec] (mean)<br>
Time per request:       278.119 [ms] (mean)<br>
Time per request:       13.906 [ms] (mean, across all concurrent requests)<br>
Transfer rate:          66.16 [Kbytes/sec] received<br>
<br>
<br>
I&#39;m hoping it&#39;s just inexperience on my part - maybe my Racket code just sucks.  Or maybe it&#39;s that I&#39;m trying to<br>
stay functional and avoid mutation, which I don&#39;t bother with in the other two. Anyone interested in looking at<br>
the code and telling me what I&#39;m doing wrong, or could do better?  I would love to use Racket for more serious<br>
projects.<br>
<br>
<a href="https://github.com/TurtleKitty/CalicoBill" target="_blank">https://github.com/TurtleKitty/CalicoBill</a><br>
<br>
<br>
Thanks,<br>
TurtleKitty<br>
<br>
<br>
<br>
____________________<br>
  Racket Users list:<br>
  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
</blockquote></div><br></div></div>