summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2022-07-16 21:25:37 +0200
committerElias Fleckenstein <eliasfleckenstein@web.de>2022-07-16 21:25:37 +0200
commit39fcb72f362bfdafbc8072935083b89496648267 (patch)
tree87d466cf51acb99557bb03e835337225d5e819dd
parentf09d195b7fddd0b348b436beafca2995bbe232f9 (diff)
downloadmtmap-39fcb72f362bfdafbc8072935083b89496648267.tar.xz
Improve node id mapping serialization performancev0.2.0
-rw-r--r--deserialize.go2
-rw-r--r--serialize.go18
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)
}