changeset 4652:f5492fda097c stree-experiment

Use gzip best speed instead of lz4.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 14 Oct 2019 12:25:32 +0200
parents f5fce22184da
children 8efc6b3289f3
files go.mod go.sum pkg/octree/strtree.go pkg/octree/tin.go
diffstat 4 files changed, 25 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/go.mod	Mon Oct 14 01:28:18 2019 +0200
+++ b/go.mod	Mon Oct 14 12:25:32 2019 +0200
@@ -6,6 +6,7 @@
 	github.com/cockroachdb/apd v1.1.0 // indirect
 	github.com/etcd-io/bbolt v1.3.3
 	github.com/fogleman/contourmap v0.0.0-20190814184649-9f61d36c4199
+	github.com/frankban/quicktest v1.5.0 // indirect
 	github.com/gofrs/uuid v3.2.0+incompatible // indirect
 	github.com/golang/snappy v0.0.1
 	github.com/gorilla/mux v1.7.3
--- a/go.sum	Mon Oct 14 01:28:18 2019 +0200
+++ b/go.sum	Mon Oct 14 12:25:32 2019 +0200
@@ -29,6 +29,8 @@
 github.com/fogleman/contourmap v0.0.0-20190814184649-9f61d36c4199 h1:kufr0u0RIG5ACpjFsPRbbuHa0FhMWsS3tnSFZ2hf07s=
 github.com/fogleman/contourmap v0.0.0-20190814184649-9f61d36c4199/go.mod h1:mqaaaP4j7nTF8T/hx5OCljA7BYWHmrH2uh+Q023OchE=
 github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
+github.com/frankban/quicktest v1.5.0 h1:Tb4jWdSpdjKzTUicPnY61PZxKbDoGa7ABbrReT3gQVY=
+github.com/frankban/quicktest v1.5.0/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o=
 github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
 github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
@@ -50,6 +52,8 @@
 github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
 github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
 github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw=
 github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
 github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
--- a/pkg/octree/strtree.go	Mon Oct 14 01:28:18 2019 +0200
+++ b/pkg/octree/strtree.go	Mon Oct 14 12:25:32 2019 +0200
@@ -15,13 +15,12 @@
 
 import (
 	"bytes"
+	"compress/gzip"
 	"encoding/binary"
 	"io"
 	"log"
 	"math"
 	"sort"
-
-	"github.com/pierrec/lz4"
 )
 
 const STRTreeDefaultEntries = 8
@@ -219,7 +218,10 @@
 func (s *STRTree) Bytes() ([]byte, error) {
 
 	var buf bytes.Buffer
-	w := lz4.NewWriter(&buf)
+	w, err := gzip.NewWriterLevel(&buf, gzip.BestSpeed)
+	if err != nil {
+		return nil, err
+	}
 
 	if err := s.tin.serialize(w); err != nil {
 		return nil, err
@@ -237,7 +239,7 @@
 		return nil, err
 	}
 
-	if err := w.Flush(); err != nil {
+	if err := w.Close(); err != nil {
 		return nil, err
 	}
 
--- a/pkg/octree/tin.go	Mon Oct 14 01:28:18 2019 +0200
+++ b/pkg/octree/tin.go	Mon Oct 14 12:25:32 2019 +0200
@@ -224,10 +224,21 @@
 		return err
 	}
 
+	var err error
+	vwrite := func(v float64) {
+		if err == nil {
+			err = binary.Write(w, binary.LittleEndian, math.Float64bits(v))
+		}
+	}
+
 	for _, v := range t.Vertices {
-		if err := v.Write(w); err != nil {
-			return err
-		}
+		vwrite(v.X)
+		vwrite(v.Y)
+		vwrite(v.Z)
+	}
+
+	if err != nil {
+		return err
 	}
 	log.Printf("info: vertices %d (%d)\n", len(t.Vertices), len(t.Vertices)*3*8)