From 80ce88419762e4342971463033802fea7cdb2973 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Mon, 15 Apr 2024 12:36:20 +0200 Subject: prog: use leb128 for exec encoding Switch from uint64 to leb128 encoding for integers. This almost more than halves serialized size: - exec sizes: 10%:2160 50%:4792 90%:14288 + exec sizes: 10%:597 50%:1438 90%:7145 and makes it smaller than the text serialization: text sizes: 10%:837 50%:1591 90%:10156 --- prog/encodingexec.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'prog/encodingexec.go') diff --git a/prog/encodingexec.go b/prog/encodingexec.go index 44a49fc58..2c13d452c 100644 --- a/prog/encodingexec.go +++ b/prog/encodingexec.go @@ -20,6 +20,7 @@ package prog import ( + "encoding/binary" "errors" "fmt" "reflect" @@ -251,8 +252,8 @@ func (w *execContext) write(v uint64) { w.eof = true return } - HostEndian.PutUint64(w.buf, v) - w.buf = w.buf[8:] + n := binary.PutVarint(w.buf, int64(v)) + w.buf = w.buf[n:] } func (w *execContext) writeArg(arg Arg) { -- cgit mrf-deployment