]> Sergey Matveev's repositories - rutrackerer.git/blobdiff - cmd/repack/main.go
Less gob calls -- several times faster search
[rutrackerer.git] / cmd / repack / main.go
diff --git a/cmd/repack/main.go b/cmd/repack/main.go
new file mode 100644 (file)
index 0000000..61f99dc
--- /dev/null
@@ -0,0 +1,30 @@
+package main
+
+import (
+       "bufio"
+       "encoding/gob"
+       "io"
+       "os"
+
+       "go.stargrave.org/rutrackerer"
+)
+
+func main() {
+       gobDec := gob.NewDecoder(bufio.NewReader(os.Stdin))
+       torrents := make([]*rutrackerer.Torrent, 0, 1<<20)
+       var err error
+       for {
+               var torrent rutrackerer.Torrent
+               if err = gobDec.Decode(&torrent); err != nil {
+                       if err == io.EOF {
+                               break
+                       }
+                       panic(err)
+               }
+               torrents = append(torrents, &torrent)
+       }
+       gobEnc := gob.NewEncoder(os.Stdout)
+       if err = gobEnc.Encode(torrents); err != nil {
+               panic(err)
+       }
+}