3 ms·
As someone who needed high throughput and looked to QUIC because of control of buffers, I recommend against it at this time. It’s got tons of performance proble
by klabb3 2y ago
As someone who needed high throughput and looked to QUIC because of control of buffers, I recommend against it at this time. It’s got tons of performance problems depending on impl and the API is different.
I don’t think QUIC is bad, or even overengineered, really. It delivers useful features, in theory, that are quite well designed for the modern web centric world. Instead I got a much larger appreciation for TCP, and how well it works everywhere: on commodity hardware, middleboxes, autotuning, NIC offloading etc etc. Never underestimate battletested tech.
In that sense, the lack of TCP_NODELAY is an exception to the rule that TCP performs well out of the box (golang is already doing this by default). As such, I think it’s time to change the default. Not using buffers correctly is a programming error, imo, and can be patched.
- supriyo-biswas 2y agoWas this ever implemented though? I found [1] but it was frozen due to age and was never worked on, it seems. (Edit: doing some more reading, it seems TCP_NODELAY was always the default in Golang. Enable TCP_NODELAY => "disable Nagle's algorithm") [1] https://github.com/golang/go/issues/57530 https://github.com/golang/go/issues/57530
- bboreham 2y agoYes. That issue is confusingly titled, but consists solely of a quote from the author of the code talking about what they were thinking at the time they did it.