4 ms·
While I've also seen it to be about twice as fast in my own testing (not with Tornado), it also had much longer GC pause times. (No stats, just watching my prog
by abecedarius 15y ago
While I've also seen it to be about twice as fast in my own testing (not with Tornado), it also had much longer GC pause times. (No stats, just watching my program's logs go by -- very noticeable stutters every couple seconds or so.)
- aidenn0 15y agoI would be very impressed if any real GC beat out CPython in terms of GC pause times, as CPython uses reference counting, which is far less subject to GC pauses than other GC methods (but has the disadvantage of worse amortized performance and inability to collect circular data-structures)
- jerf 15y ago"Difficulty" collecting circular structures, not "inability". You can still walk the live set with reference counting every so often to catch the circular trash, but you do have to pay through the nose, relatively speaking.
- sb 15y agoWhich is actually what Python is doing, too. There is (IIRC) a mark and sweep collector that collects cycles. Another interesting technique for dealing with this problem is called "trial deletion."
- abecedarius 15y agoYes, it's hard -- I'm just saying it looked like enough to matter for a server app. Maybe you could arrange to force GC in between requests somehow. (I haven't read the OP, Google wanted me to log in for some reason.)
- kingkilr 15y agoFWIW, Armin was playing with implementing a concurrent GC, to help with the pause times. Not sure what the status of it is though.