On Friday, 7 February 2014 at 15:33:01 UTC, Adam D. Ruppe wrote:
On Friday, 7 February 2014 at 11:37:16 UTC, Ola Fosheim Grøstad wrote:
How slow is slow? Is it slower than in Go and Python?

One problem with allocating the exception is the stop-the-world thing. My cgi.d's built in httpd does some allocations in its constructor, which is run once per request. It can answer requests at a rate of about 6000/sec on my computer...

Until the allocation have gone too much and the GC starts running. Then all the pending requests stop, killing the throughput.

(BTW, interestingly, on Linux it uses separate process pools instead of threads. The GC does NOT stop the world since the other processes can keep going. But, if the requests are fairly uniform - as is typically the case with benchmarks - each process hits the GC threshold at about the same time.... ironically, it is the deterministic nature of the GC that leads to the performance killer there.)

It's obviously not a solution, but you could change that by having each process call GC.reserve() with a different size.

Reply via email to