Bryan Matsuo
Bryan Matsuo
Comment imported from my #1 regarding design considerations > - Portability issues? Can databases be ported across os/arch? Portability across gc+gcc, gc+clang, gccgo? > - Potential GC issues. A Go...
One solution may be to expose an interface and one(?) variant of *.Put that use interface values. ``` type Value interface { MemAddr() unsafe.Pointer MemSize() uintptr } func Bytes(b []byte)...
My branch, bmatsuo/value-interfaces experiments with the interface proposed above. However, the results are not encouraging. Writing byte slices containing big-endian encoded uint64 values seems to be as good or better...
@lmd Thanks for the input. Honestly I hadn't really considered the benefits for a read-heavy workload. Do you have a benchmark program that I look at and maybe use to...
Thanks for the input @mranney. Indeed portability is not a show stopper for this issue. I have gotten the branch with this experimentation working again, bmatsuo/value-interfaces. The tests and benchmarks...
@lmb I'm a little confused about what I'm seeing benchmarked ~~here~~(edit: in that gist). Do you have any more details about the source of these tests/numbers, like a mailing list...
I realized that the experimental raft backend I have worked on uses a database with uint64 keys. On a 32-bit machine LMDB cannot store a 64-bit integer key/value (so a...
I've become aware of a development that is related to all of this. https://github.com/golang/go/issues/6907 It looks like it will be possible to get a pointer to the raw bytes backing...
The issue I mentioned before, golang/go#6907 didn't make it into go1.7. By the look of things I have doubts that it will make the go1.8 release. However, go1.8beta1 was just...
I am coming very far along in my implementation of this enhancement. My current implementation shows the consistent performance improvements you would expect from this optimization. I probably won't get...