| ▲ | marcosdumay 3 hours ago | ||||||||||||||||
> That's when you measure and optimize. How do you "optimize" the GC away after you wrote your entire database server in a language that uses it? | |||||||||||||||||
| ▲ | ApolloFortyNine 3 hours ago | parent | next [-] | ||||||||||||||||
It's incredibly in common in game development, C# has a lot of features you can take advantage for this. But the most naive example any language supports is simple object pooling. Then more fancy, zero allocations tasks in C# https://github.com/cysharp/unitask | |||||||||||||||||
| ▲ | marginalia_nu 2 hours ago | parent | prev | next [-] | ||||||||||||||||
Object pooling and bump allocators using persistent scratch buffers, mostly. The latter what you'd use for read buffers in I/O intensive applications like databases and the like. | |||||||||||||||||
| ▲ | pjmlp an hour ago | parent | prev | next [-] | ||||||||||||||||
Starting by using a GC language that is strongly typed, compiles to native code, supports value types, memory pools/arenas if required, which provides best of both worlds. Where GC means any kind of GC algorithm from CS point of view. | |||||||||||||||||
| ▲ | jmull 3 hours ago | parent | prev | next [-] | ||||||||||||||||
GC languages typically have features of the language and/or standard library that make GC the default, not the only option. | |||||||||||||||||
| |||||||||||||||||
| ▲ | jayd16 2 hours ago | parent | prev [-] | ||||||||||||||||
Lots of ways but an obvious and generic answer is to use pooling. | |||||||||||||||||