From 39fcb72f362bfdafbc8072935083b89496648267 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sat, 16 Jul 2022 21:25:37 +0200 Subject: [PATCH] Improve node id mapping serialization performance --- deserialize.go | 2 +- serialize.go | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/deserialize.go b/deserialize.go index c59837c..8722bd7 100644 --- a/deserialize.go +++ b/deserialize.go @@ -223,7 +223,7 @@ func Deserialize(r io.Reader, idNameMap map[string]mt.Content) *MapBlk { panic(err) } - nameIdMap := make(map[mt.Content]string) + var nameIdMap = make(map[mt.Content]string) for i := uint16(0); i < nameIdMapCount; i++ { var id mt.Content diff --git a/serialize.go b/serialize.go index 4ec2b94..4001dc7 100644 --- a/serialize.go +++ b/serialize.go @@ -8,7 +8,7 @@ import ( "io" ) -func Serialize(blk *MapBlk, w io.Writer, idNameMap map[string]mt.Content) { +func Serialize(blk *MapBlk, w io.Writer, nameIdMap map[mt.Content]string) { if err := binary.Write(w, binary.BigEndian, &SerializeVer); err != nil { panic(err) } @@ -151,21 +151,21 @@ func Serialize(blk *MapBlk, w io.Writer, idNameMap map[string]mt.Content) { panic(err) } - var exists = make(map[mt.Content]struct{}) + var localNameIdMap = make(map[mt.Content]string) for i := 0; i < 4096; i++ { - exists[blk.Param0[i]] = struct{}{} + if _, ok := localNameIdMap[blk.Param0[i]]; ok { + continue + } + + localNameIdMap[blk.Param0[i]] = nameIdMap[blk.Param0[i]] } - var nameIdMapCount = uint16(len(exists)) + var nameIdMapCount = uint16(len(localNameIdMap)) if err := binary.Write(w, binary.BigEndian, &nameIdMapCount); err != nil { panic(err) } - for name, id := range idNameMap { - if _, ok := exists[id]; !ok { - continue - } - + for id, name := range localNameIdMap { if err := binary.Write(w, binary.BigEndian, &id); err != nil { panic(err) } -- 2.44.0