// El árbol de los apuntes frente a std::set, con claves crecientes.
// Los tiempos dependen de la máquina. -O2, sin sanitizers, mediana de 3.
#include <iomanip>
#include <iostream>
#include <set>

#include "bench.h"
#include "rb_set.h"

namespace {

template <typename Tree>
double time_inserts(int n) {
    return median_seconds(3, [&] {
        Tree tree;
        for (int key = 0; key < n; key++) {
            tree.insert(key);
        }
        keep(tree.size());
    });
}

}  // namespace

int main() {
    const int n = 1024000;
    std::cout << std::fixed << std::setprecision(4);
    std::cout << "RedBlackSet: " << time_inserts<RedBlackSet<int>>(n) << " s\n";
    std::cout << "std::set:    " << time_inserts<std::set<int>>(n) << " s\n";
    return 0;
}
