ortuman / nuke

⚡ A memory arena implementation for Go.
Apache License 2.0
500 stars 13 forks source link

Can the usage scenarios be clarified further? #3

Closed Nuclear6 closed 8 months ago

Nuclear6 commented 8 months ago

Additionally, we can inject a memory arena as part of a context, with the purpose of being used throughout the lifecycle of certain operations, such as an HTTP request.

What is {certain operations}?

jorelosorio commented 8 months ago

Would be nice to know more about advantages over garbage collector, if that makes sense. Does this can in somehow replace the GC?

ortuman commented 8 months ago

@jorelosorio

Does this can in somehow replace the GC?

Not exactly. Memory arenas are more designed for cases where certain processing can generate a high number of objects that are subsequently discarded. A clear example of this case would be the parsing of a text input. For the rest of the cases, the GC is the way to go.

The main advantage of a memory arena over the GC is that allocating/deallocating memory translates into simply adjusting a memory pointer, without ever having to resort to the heap.

In the future, I plan to add some benchmark examples to validate that indeed the memory arena is more efficient than the GC in these types of scenarios.

ortuman commented 8 months ago

@Nuclear6

What is {certain operations}?

Operations in which the lifespan is well delimited, such as a network operation on a server, or rendering a frame in a video game.

For these cases, those objects that are needed during this processing only temporarily can be sent to the memory arena instead of the GC, so they can all be released immediately once the operation has been completed.

jorelosorio commented 8 months ago

@ortuman thanks for clarifications, It more clear, so I will keep on eye on this library to include it on one of my projects.