]> git.sesse.net Git - remoteglot/blobdiff - book/binloader.cpp
Tune compression options a bit for intermediates (binloader) vs. final output (binmer...
[remoteglot] / book / binloader.cpp
index e4b40a6f59a6c0d2ac028f6f0cd69422c5ee1cfd..9658c2ec992bfd6941a086628b6e7042911ca624 100644 (file)
@@ -1,4 +1,7 @@
 //#define _GLIBCXX_PARALLEL
+
+// Usage: ./binloader IN1 IN2 IN3 ... OUT
+
 #include <stdio.h>
 #include <vector>
 #include <mtbl.h>
@@ -26,7 +29,7 @@ int main(int argc, char **argv)
 {
        vector<Element> elems;
 
-       for (int i = 1; i < argc; ++i) {
+       for (int i = 1; i < argc - 1; ++i) {
                FILE *fp = fopen(argv[i], "rb");
                if (fp == NULL) {
                        perror(argv[i]);
@@ -80,10 +83,10 @@ int main(int argc, char **argv)
        sort(elems.begin(), elems.end());
 
        printf("Writing SSTable...\n");
-       mtbl_writer* mtbl = mtbl_writer_init("open.mtbl", NULL);
+       mtbl_writer_options* wopt = mtbl_writer_options_init();
+       mtbl_writer_options_set_compression(wopt, MTBL_COMPRESSION_SNAPPY);
+       mtbl_writer* mtbl = mtbl_writer_init(argv[argc - 1], wopt);
        Count c;
-       int num_elo = 0;
-       double sum_white_elo = 0.0, sum_black_elo = 0.0;
        for (int i = 0; i < elems.size(); ++i) {
                if (elems[i].result == WHITE) {
                        ++c.white;
@@ -94,19 +97,15 @@ int main(int argc, char **argv)
                }
                c.opening_num = elems[i].opening_num;
                if (elems[i].white_elo >= 100 && elems[i].black_elo >= 100) {
-                       sum_white_elo += elems[i].white_elo;
-                       sum_black_elo += elems[i].black_elo;
-                       ++num_elo;
+                       c.sum_white_elo += elems[i].white_elo;
+                       c.sum_black_elo += elems[i].black_elo;
+                       ++c.num_elo;
                }
                if (i == elems.size() - 1 || elems[i].bpfen_and_move != elems[i + 1].bpfen_and_move) {
-                       c.avg_white_elo = sum_white_elo / num_elo;
-                       c.avg_black_elo = sum_black_elo / num_elo;
                        mtbl_writer_add(mtbl,
                                (const uint8_t *)elems[i].bpfen_and_move.data(), elems[i].bpfen_and_move.size(),
                                (const uint8_t *)&c, sizeof(c));
                        c = Count();
-                       num_elo = 0;
-                       sum_white_elo = sum_black_elo = 0.0;
                }
        }
        mtbl_writer_destroy(&mtbl);