3 ms·
Are there guides on how to do this? I've always assumed that passing by value helps but I'm wondering if there's more explicit guidance out there?
by woah 10y ago
Are there guides on how to do this? I've always assumed that passing by value helps but I'm wondering if there's more explicit guidance out there?
- _ph_ 10y agoI have no guide at hand, but here a few hints: - in general, understand which types are values, and which have to be allocated. E.g. the slice structure itself is a value type (typically 24 bytes), but it points to an array, which might be heap allocated. Re-slicing creates a new slice structure, but does not touch the heap - extending a slice might. - to analyze your code, use go build -gcflags="-m", this will print out optimization information, especially which allocations "escape to heap", which means, they are heap allocated and not stack allocated. - Interfaces are really great, but copying values of interface{} does involve heap allocation of 16 bytes. Also method invocation via interfaces has some overhead. Method invocation of non-interface types is a fast a plain function call. - profile :)