Yeah, mmap is a valid solution. Of course, you end up with code that works less reliably on all platforms. And, depending on what kinds of operations you are doing you might not get a perf benefit.
On Friday, 15 February 2019 19:34:55 UTC+2, Jeroen Massar wrote: > > Hi folks, > > Silly question time, to get to the most idiomatic golang based solution... > > In C, when I have a large collection of structs with data (no pointers > outbound), I would just mmap a large file and chunk up the file into the > size of the struct, basically thus doing a bit of memory management myself. > Then with the offset * structsize, it effectively becomes a big list. > Save/load is a sync/close + mmap away, no need to figure out what is > loaded, cached, in memory etc or fight the system. > (I guess folks know the advantages/disadvantages of mmap here ;) ) > > I've seen the examples where folks do effectively the same in golang: mmap > into a SliceHeader and voila. > > But, is there a more idiomatic way to doing this? > > Especially, when one wants to save and later load all these objects to > persistent storage, the mmap model is quite nice. > Looping through a slice/map and having to write stuff that might have > changed (would have to track changes to objects, an option, but OS does it > otherwise for one). > > Thus, go with mmap trick, or any better ideas? > > Greets, > Jeroen > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.