[Groonga-commit] groonga/grnxx at f87682b [master] Add a benchmark for foreign key. (#127)

Zurück zum Archiv-Index

susumu.yata null+****@clear*****
Fri Dec 5 19:16:25 JST 2014


susumu.yata	2014-12-05 19:16:25 +0900 (Fri, 05 Dec 2014)

  New Revision: f87682bb5b7d75559911ebb7a8b64e0d6b09e6b6
  https://github.com/groonga/grnxx/commit/f87682bb5b7d75559911ebb7a8b64e0d6b09e6b6

  Message:
    Add a benchmark for foreign key. (#127)

  Modified files:
    benchmark/benchmark_foreign_key.cpp

  Modified: benchmark/benchmark_foreign_key.cpp (+39 -3)
===================================================================
--- benchmark/benchmark_foreign_key.cpp    2014-12-05 19:15:33 +0900 (3224516)
+++ benchmark/benchmark_foreign_key.cpp    2014-12-05 19:16:25 +0900 (4852ccd)
@@ -75,7 +75,7 @@ void generate_data() {
   }
 }
 
-void benchmark_direct_build() {
+void benchmark_direct_build() try {
   std::cout << __PRETTY_FUNCTION__ << std::endl;
 
   double min_elapsed = std::numeric_limits<double>::max();
@@ -105,6 +105,8 @@ void benchmark_direct_build() {
     }
   }
   std::cout << "min. elapsed [s] = " << min_elapsed << std::endl;
+} catch (const char *message) {
+  std::cout << "message = " << message << std::endl;
 }
 
 void benchmark_indirect_build() try {
@@ -138,8 +140,41 @@ void benchmark_indirect_build() try {
     }
   }
   std::cout << "min. elapsed [s] = " << min_elapsed << std::endl;
-} catch (const char *x) {
-  std::cout << "x = " << x << std::endl;
+} catch (const char *message) {
+  std::cout << "message = " << message << std::endl;
+}
+
+void benchmark_sequential_build() try {
+  std::cout << __PRETTY_FUNCTION__ << std::endl;
+
+  double min_elapsed = std::numeric_limits<double>::max();
+  for (size_t i = 0; i < LOOP; ++i) {
+    Timer timer;
+
+    auto db = grnxx::open_db("");
+    auto to_table = db->create_table("Values");
+    auto value_column = to_table->create_column("Value", grnxx::TEXT_DATA);
+    value_column->create_index("Index", grnxx::TREE_INDEX);
+    to_table->set_key_column("Value");
+    auto from_table = db->create_table("Refs");
+    grnxx::ColumnOptions options;
+    options.reference_table_name = "Values";
+    auto ref_column =
+        from_table->create_column("Ref", grnxx::INT_DATA, options);
+    for (size_t j = 0; j < REFS_SIZE; ++j) {
+      grnxx::Int row_id = from_table->insert_row();
+      grnxx::Int ref = to_table->find_or_insert_row(values[refs[j].raw()]);
+      ref_column->set(row_id, ref);
+    }
+
+    double elapsed = timer.elapsed();
+    if (elapsed < min_elapsed) {
+      min_elapsed = elapsed;
+    }
+  }
+  std::cout << "min. elapsed [s] = " << min_elapsed << std::endl;
+} catch (const char *message) {
+  std::cout << "message = " << message << std::endl;
 }
 
 }  // namespace
@@ -149,6 +184,7 @@ int main() {
 
   benchmark_direct_build();
   benchmark_indirect_build();
+  benchmark_sequential_build();
 
   return 0;
 }
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Zurück zum Archiv-Index