-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
55 lines (46 loc) · 1.18 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package main
import (
"fmt"
"os"
"time"
"tools"
"tsxor"
)
func main() {
timestamps, values := tools.LoadFromCSV(os.Args[1], true)
start := time.Now()
c := tsxor.Compressor{}
c.New(timestamps[0])
for i := 0; i < len(values); i++ {
c.AddValue(timestamps[i], &values[i])
}
c.Close()
t := time.Now()
elapsed := t.Sub(start)
nCols := len(values[0])
nLines := len(values)
originalSize := 64 * (nCols + 1) * nLines
compressedSize := c.CompressedSize()
fmt.Println("\n\n\n*** COMPRESSION ***")
th := (float64(8*(nCols+1)*nLines) / float64(elapsed.Microseconds()))
fmt.Printf("%.3f %s\n", th, " MB/s")
ratio := float64(originalSize) / float64(compressedSize)
fmt.Printf("%.3f%s\n", ratio, " x")
start = time.Now()
bstream, bytes := c.ExportData()
d := tsxor.Decompressor{}
d.New(bstream, bytes, uint64(nCols))
for d.HasNext() {
}
t = time.Now()
elapsed = t.Sub(start)
fmt.Println("\n\n\n*** DECOMPRESSION ***")
th = 8 * (float64((nCols + 1) * nLines)) / float64((elapsed.Microseconds()))
fmt.Printf("%.3f %s\n\n", th, " MB/s")
fmt.Println("*** LAST ROW ***")
fmt.Print(d.StoredTimestamp, "-->")
for _, v := range d.StoredValues {
fmt.Print(v, "|")
}
fmt.Println("")
}