susumu.yata
null+****@clear*****
Fri May 8 11:20:57 JST 2015
susumu.yata 2015-05-08 11:20:57 +0900 (Fri, 08 May 2015) New Revision: 0e28a1181c40cf9ee16221cd4dfd1119b3755eb5 https://github.com/groonga/grnxx/commit/0e28a1181c40cf9ee16221cd4dfd1119b3755eb5 Message: Gnx: add benchmark for comparison against GetValue(). Modified files: go3/gnx/grn_test.go Modified: go3/gnx/grn_test.go (+92 -0) =================================================================== --- go3/gnx/grn_test.go 2015-05-08 10:43:33 +0900 (e6d6f6a) +++ go3/gnx/grn_test.go 2015-05-08 11:20:57 +0900 (82ac466) @@ -902,3 +902,95 @@ func BenchmarkGrnColumnGetValueForGeoPointVector(b *testing.B) { func BenchmarkGrnColumnGetValueForTextVector(b *testing.B) { benchmarkGrnColumnGetValueForVector(b, "Text") } + +func benchmarkGrnDBSelectForScalar(b *testing.B, valueType string) { + dirPath, _, db, table, column := + createTempGrnColumn(b, "Table", nil, "Value", valueType, nil) + defer removeTempGrnDB(b, dirPath, db) + ids := make([]Int, numTestRows) + for i, _ := range ids { + _, id, err := table.InsertRow(nil) + if err != nil { + b.Fatalf("Table.InsertRow() failed: %s", err) + } + if err := column.SetValue(id, generateRandomValue(valueType)); err != nil { + b.Fatalf("Column.SetValue() failed: %s", err) + } + ids[i] = id + } + + b.ResetTimer() + for i := 0; i < b.N; i++ { + _, err := db.Query("select Table --output_columns Value --limit -1") + if err != nil { + b.Fatalf("DB.Query() failed: %s", err) + } + } +} + +func benchmarkGrnDBSelectForVector(b *testing.B, valueType string) { + options := NewColumnOptions() + options.ColumnType = VectorColumn + dirPath, _, db, table, column := + createTempGrnColumn(b, "Table", nil, "Value", valueType, options) + defer removeTempGrnDB(b, dirPath, db) + ids := make([]Int, numTestRows) + for i, _ := range ids { + _, id, err := table.InsertRow(nil) + if err != nil { + b.Fatalf("Table.InsertRow() failed: %s", err) + } + if err := column.SetValue(id, generateRandomVectorValue(valueType)); err != nil { + b.Fatalf("Column.SetValue() failed: %s", err) + } + ids[i] = id + } + + b.ResetTimer() + for i := 0; i < b.N; i++ { + _, err := db.Query("select Table --output_columns Value --limit -1") + if err != nil { + b.Fatalf("DB.Query() failed: %s", err) + } + } +} + +func BenchmarkGrnDBSelectForBool(b *testing.B) { + benchmarkGrnDBSelectForScalar(b, "Bool") +} + +func BenchmarkGrnDBSelectForInt(b *testing.B) { + benchmarkGrnDBSelectForScalar(b, "Int") +} + +func BenchmarkGrnDBSelectForFloat(b *testing.B) { + benchmarkGrnDBSelectForScalar(b, "Float") +} + +func BenchmarkGrnDBSelectForGeoPoint(b *testing.B) { + benchmarkGrnDBSelectForScalar(b, "GeoPoint") +} + +func BenchmarkGrnDBSelectForText(b *testing.B) { + benchmarkGrnDBSelectForScalar(b, "Text") +} + +func BenchmarkGrnDBSelectForBoolVector(b *testing.B) { + benchmarkGrnDBSelectForVector(b, "Bool") +} + +func BenchmarkGrnDBSelectForIntVector(b *testing.B) { + benchmarkGrnDBSelectForVector(b, "Int") +} + +func BenchmarkGrnDBSelectForFloatVector(b *testing.B) { + benchmarkGrnDBSelectForVector(b, "Float") +} + +func BenchmarkGrnDBSelectForGeoPointVector(b *testing.B) { + benchmarkGrnDBSelectForVector(b, "GeoPoint") +} + +func BenchmarkGrnDBSelectForTextVector(b *testing.B) { + benchmarkGrnDBSelectForVector(b, "Text") +} -------------- next part -------------- HTML����������������������������...Download