[Groonga-commit] groonga/grnxx at 9366d08 [master] Gnx: add benchmark for GrnColumn.SetValue().

Back to archive index

susumu.yata null+****@clear*****
Fri May 8 10:43:33 JST 2015


susumu.yata	2015-05-08 10:43:33 +0900 (Fri, 08 May 2015)

  New Revision: 9366d0823b70042c5f8d3f98a89a4b1be7156bfb
  https://github.com/groonga/grnxx/commit/9366d0823b70042c5f8d3f98a89a4b1be7156bfb

  Message:
    Gnx: add benchmark for GrnColumn.SetValue().

  Modified files:
    go3/gnx/grn_test.go

  Modified: go3/gnx/grn_test.go (+107 -0)
===================================================================
--- go3/gnx/grn_test.go    2015-05-07 18:17:45 +0900 (e5faccf)
+++ go3/gnx/grn_test.go    2015-05-08 10:43:33 +0900 (e6d6f6a)
@@ -1,6 +1,7 @@
 package gnx
 
 import (
+	"fmt"
 	"io/ioutil"
 	"math/rand"
 	"os"
@@ -702,6 +703,112 @@ func TestGrnColumnGetValueForTextVector(t *testing.T) {
 
 var numTestRows = 100000
 
+func benchmarkGrnColumnSetValueForScalar(b *testing.B, valueType string) {
+	b.StopTimer()
+	dirPath, _, db, table :=
+		createTempGrnTable(b, "Table", nil)
+	defer removeTempGrnDB(b, dirPath, db)
+	ids := make([]Int, numTestRows)
+	values := make([]interface{}, numTestRows)
+	for i, _ := range ids {
+		_, id, err := table.InsertRow(nil)
+		if err != nil {
+			b.Fatalf("Table.InsertRow() failed: %s", err)
+		}
+		ids[i] = id
+		values[i] = generateRandomValue(valueType)
+	}
+
+	for i := 0; i < b.N; i++ {
+		column, err := table.CreateColumn(fmt.Sprintf("V%d", i), valueType, nil)
+		if err != nil {
+			b.Fatalf("Table.CreateColumn() failed(): %s", err)
+		}
+		b.StartTimer()
+		for i, id := range ids {
+			if err := column.SetValue(id, values[i]); err != nil {
+				b.Fatalf("Column.SetValue() failed: %s", err)
+			}
+			ids[i] = id
+		}
+		b.StopTimer()
+	}
+}
+
+func benchmarkGrnColumnSetValueForVector(b *testing.B, valueType string) {
+	b.StopTimer()
+	dirPath, _, db, table :=
+		createTempGrnTable(b, "Table", nil)
+	defer removeTempGrnDB(b, dirPath, db)
+	ids := make([]Int, numTestRows)
+	values := make([]interface{}, numTestRows)
+	for i, _ := range ids {
+		_, id, err := table.InsertRow(nil)
+		if err != nil {
+			b.Fatalf("Table.InsertRow() failed: %s", err)
+		}
+		ids[i] = id
+		values[i] = generateRandomVectorValue(valueType)
+	}
+
+	for i := 0; i < b.N; i++ {
+		options := NewColumnOptions()
+		options.ColumnType = VectorColumn
+		column, err := table.CreateColumn(fmt.Sprintf("V%d", i), valueType, options)
+		if err != nil {
+			b.Fatalf("Table.CreateColumn() failed(): %s", err)
+		}
+		b.StartTimer()
+		for i, id := range ids {
+			if err := column.SetValue(id, values[i]); err != nil {
+				b.Fatalf("Column.SetValue() failed: %s", err)
+			}
+			ids[i] = id
+		}
+		b.StopTimer()
+	}
+}
+
+func BenchmarkGrnColumnSetValueForBool(b *testing.B) {
+	benchmarkGrnColumnSetValueForScalar(b, "Bool")
+}
+
+func BenchmarkGrnColumnSetValueForInt(b *testing.B) {
+	benchmarkGrnColumnSetValueForScalar(b, "Int")
+}
+
+func BenchmarkGrnColumnSetValueForFloat(b *testing.B) {
+	benchmarkGrnColumnSetValueForScalar(b, "Float")
+}
+
+func BenchmarkGrnColumnSetValueForGeoPoint(b *testing.B) {
+	benchmarkGrnColumnSetValueForScalar(b, "GeoPoint")
+}
+
+func BenchmarkGrnColumnSetValueForText(b *testing.B) {
+	benchmarkGrnColumnSetValueForScalar(b, "Text")
+}
+
+func BenchmarkGrnColumnSetValueForBoolVector(b *testing.B) {
+	benchmarkGrnColumnSetValueForVector(b, "Bool")
+}
+
+func BenchmarkGrnColumnSetValueForIntVector(b *testing.B) {
+	benchmarkGrnColumnSetValueForVector(b, "Int")
+}
+
+func BenchmarkGrnColumnSetValueForFloatVector(b *testing.B) {
+	benchmarkGrnColumnSetValueForVector(b, "Float")
+}
+
+func BenchmarkGrnColumnSetValueForGeoPointVector(b *testing.B) {
+	benchmarkGrnColumnSetValueForVector(b, "GeoPoint")
+}
+
+func BenchmarkGrnColumnSetValueForTextVector(b *testing.B) {
+	benchmarkGrnColumnSetValueForVector(b, "Text")
+}
+
 func benchmarkGrnColumnGetValueForScalar(b *testing.B, valueType string) {
 	dirPath, _, db, table, column :=
 		createTempGrnColumn(b, "Table", nil, "Value", valueType, nil)
-------------- next part --------------
HTML����������������������������...
다운로드 



More information about the Groonga-commit mailing list
Back to archive index