I'm glad you brought this up, Oisín.  I was already thinking of appealing to this mailing list, in hopes of finding an eager detective to hunt down what is going on!  I can say that I can achieve much better performance with the latest code on my own workstation (similar profile to /one/ of the several machines used by TechEmpower), which leads me to think something basic is getting in the way of proper performance in the benchmarking environment.

On 7/31/19 8:06 PM, Oisín Mac Fhearaí wrote:
I've noticed that Ur/web's performance benchmarks on Techempower have changed significantly between round 16 and 17.

For example, in round 16, Urweb measured 323,430 responses per second to the "Fortunes" benchmark. In round 17 (and beyond), it achieved 4,024 RPS with MySQL and 2,544 RPS with Postgres.

What could explain such a drastic drop in performance? The blog entry for round 17 mentioned query pipelining as an explanation for some of the frameworks getting much faster, but I don't see why Urweb's RPS would drop by a factor of 100x, unless perhaps previous rounds had query caching enabled and then round 17 disabled them.

Can anyone here shed light on this? I built a simplified version of the "sql" demo with the 2016 tarball version of Ur (used by the round 16 benchmarks) and a recent snapshot, and they both perform at similar speeds on my laptop.

Oddly, the load testing tool I used (a Go program called "hey") seems to have one request that takes 5 seconds if I set it to use more concurrent threads than the number of threads available to the Ur/web program. Otherwise, the longest request takes about 0.02 seconds. This seems unrelated to the performance drop on the Techempower benchmarks, since the max latency is quite low there.
_______________________________________________
Ur mailing list
Ur@impredicative.com
http://www.impredicative.com/cgi-bin/mailman/listinfo/ur

Reply via email to