1
0
mirror of https://github.com/golang/go synced 2024-11-24 23:27:57 -07:00
go/src
Robert Griesemer 5ee7ef90cd suffixarray: improved serialization code
Use gobs to serialize indexes instead of encoding/binary.

Even with gobs, serialize data in slices instead of
applying gob to the entire data structure at once,
to reduce the amount of extra buffer memory needed
inside gob.

7x faster Write/Read for new BenchmarkSaveRestore
compared to old code; possibly because encoding/binary
is more expensive for int32 slice elements (interface
call to get little/big endian encoding), while gob's
encoding is fixed (unconfirmed).

new (using gobs):
suffixarray.BenchmarkSaveRestore	       1	2153604000 ns/op

old (using encoding/binary):
suffixarray.BenchmarkSaveRestore	       1	15118322000 ns/op

The actual serialized data is slightly larger then using
the old code for very large indices because full 32bit indices
require 5bytes using gobs instead of 4bytes (encoding/binary)
in serialized form.

R=r
CC=golang-dev
https://golang.org/cl/5087041
2011-09-20 14:36:19 -07:00
..
cmd gc: disallow invalid map keys 2011-09-19 13:11:24 -04:00
lib9 build: fix unused parameters 2011-08-25 16:08:13 -04:00
libbio
libmach libmach: fix incorrect use of memset 2011-09-01 13:43:03 -04:00
pkg suffixarray: improved serialization code 2011-09-20 14:36:19 -07:00
all-qemu.bash build: update all-qemu.bash 2011-07-28 13:04:30 -04:00
all.bash
clean.bash build: reenable clean.bash without gomake 2011-03-21 00:27:50 -03:00
env.bash build: fix noclobber 2011-07-28 19:38:14 -04:00
make.bash make.bash: remove old bash version of gotest on Windows 2011-05-04 11:16:55 +10:00
Make.ccmd build: explain $PWD use 2011-06-22 17:00:46 -04:00
Make.clib build: explain $PWD use 2011-06-22 17:00:46 -04:00
Make.cmd make: add nuke target for C commands and libs 2011-05-11 22:53:42 -04:00
Make.common make: prevent rm provoking 'text file busy' errors. 2011-04-15 08:25:44 -04:00
Make.inc build: avoid redundant bss declarations 2011-08-23 22:39:14 -04:00
Make.pkg gc: add -p flag to catch import cycles earlier 2011-09-07 15:50:21 -04:00
quietgcc.bash build: handle spaces in $USER 2011-07-28 13:04:52 -04:00
run.bash build: allow builds without cgo 2011-08-10 21:36:48 -04:00
sudo.bash sudo.bash: print error/exit if problem with /usr/local/bin 2011-09-01 17:24:32 +10:00
version.bash version.bash: update VERSION on -save if already present 2011-08-24 22:10:25 -03:00