<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    They're out, and they include a serious Ur/Web configuration error
    for one of the platforms (and I hope this error is fixed in amended
    results), but there is already some good info here to support claims
    of high performance for Ur/Web.  Here's the text I added to the FAQ:<br>
    <br>
    <div class="box">
      <h2>Can you be more specific about run-time performance?</h2>
      <p>The <a target="_top"
          href="http://www.techempower.com/benchmarks/">TechEmpower Web
          Framework Benchmarks</a> provide a performance comparison
        managed by a third party. Ur/Web does pretty well, and you can
        check that site for details, but a few caveats are important.
        First, the Ur/Web programming model is unusually oriented toward
        security and concurrency simplicity. For instance, Ur/Web's
        standard random number generation function generates
        cryptographically secure numbers, which imposes an extra
        run-time cost in the several benchmarks based on random numbers;
        and Ur/Web's concurrency model allows the programmer to think of
        every piece of code as running inside a transaction, which
        imposes extra run-time cost in the several benchmarks that use
        databases, necessarily within a transaction per request, unlike
        in almost all other frameworks' entries in the benchmarks. Also,
        by the way, the current i7 numbers were captured under a serious
        configuration error and should be ignored.</p>
      <p>OK, having said all that, Ur/Web is still doing pretty darn
        well! Consider the results for the highest-capacity machine in
        the benchmarks, which provides 48 hardware threads. In rough
        numbers, here's how Ur/Web is doing.</p>
      <table border="1">
        <tbody>
          <tr>
            <th>Test</th>
            <th>Requests/sec.</th>
            <th>Latency</th>
          </tr>
          <tr>
            <td>Hello world in JSON</td>
            <td>400k</td>
            <td>0.6 ms</td>
          </tr>
          <tr>
            <td>1 SQL query</td>
            <td>100k</td>
            <td>2 ms</td>
          </tr>
          <tr>
            <td>20 SQL queries</td>
            <td>10k</td>
            <td>24 ms</td>
          </tr>
          <tr>
            <td>20 SQL query/update pairs</td>
            <td>500</td>
            <td>2 s</td>
          </tr>
        </tbody>
      </table>
      <p>Yeah, Ur/Web is really falling over in the many-updates test,
        with optimistic SQL concurrency thrashing to provide the
        transactional semantics that most benchmark entrants don't
        bother to shoot for. Still, very few web sites process as much
        as hundreds of requests per second!</p>
      <p>Despite Ur/Web's performance handicaps in service of a pleasant
        programming model, on the Fortunes test, which is closest to the
        scenario Ur/Web was designed for, Ur/Web has the best latency
        and 4th-best throughput, out of about 50 frameworks passing that
        test's basic sanity check. In the spirit of sibling rivalry,
        I'll also point out that the Haskell frameworks consistently
        achieve less than half the throughput of Ur/Web.</p>
    </div>
  </body>
</html>