|
|
|
|
|
by anon_d
5700 days ago
|
|
With only three times as much memory, it runs on average 17% slower than
explicit memory management. However, with only twice as much memory,
garbage collection degrades performance by nearly 70%. When physical
memory is scarce, paging causes garbage collection to run an order of
magnitude slower than explicit memory management. I don't see how this article is helping your point; that's a pretty
massive hit. Even worse, this is a GC-style program modified to
use explicit malloc/free. Programming with manual memory management
encourages a very different style of programming where you try to use
malloc/free as little as possible, and you try keep memory for various
things in contiguous chunks of memory. EDIT: This comment is interesting: http://lambda-the-ultimate.org/node/2552#comment-38915 |
|
Also, the technique described in that comment (forking processes with finite lifetimes, allocating but not freeing, terminating and letting the OS clean up all at once) is also what Erlang does, and it seems to work pretty well in practice. Each process has its own arena, for allocation purposes.