6 ms·
Yes, I have. We used go in a system that had to keep track of essentially large hashes containing popularity / scoring information, in addition to what were eff
by eggnet 11y ago
Yes, I have. We used go in a system that had to keep track of essentially large hashes containing popularity / scoring information, in addition to what were effectively routing tables, and ran into >500ms pauses.
At scale, it seemed the largest part of the complexity of go was manipulating data structures and code to avoid gc pauses. With sufficient work we may have been able to decrease the pauses sufficiently, but we also ran into raw request per second numbers that were lower than we liked.
The direction we have taken was to switch to C++ for this application. Having said that, the gc pauses were the primary reason for the change.
- nulltype 11y agoAh, too bad. Do you know what sort of heap sizes you got those pauses at?
- eggnet 11y agoAbout half a gig resident memory.
- jerf 11y agoIf it's possible, and you're interested in trying, it would be interesting to pull that code out and try it again with Go 1.5, if it's easy. If you've got a C++ solution, I would not suggest under any circumstances short of Go suddenly and frankly mysteriously blowing the doors off of C++ that you switch... I'm just saying it would be an interesting comparison.
- eggnet 11y agoI'll be recommending we try it in a lab with go 1.5, absolutely.
- bjourne 11y agoWhy didn't you just use Java? Hotspot has been optimized for over a decade to make (among other things) gc pauses as manageable as possible. And there are other runtimes (http://www.azulsystems.com/ http://www.azulsystems.com/) specifically optimized for low latency. The poor quality of Go's GC were never a secret.