github.com/jackc/pgx/v5@v5.5.5/pgconn/benchmark_private_test.go (about) 1 package pgconn 2 3 import ( 4 "strings" 5 "testing" 6 ) 7 8 func BenchmarkCommandTagRowsAffected(b *testing.B) { 9 benchmarks := []struct { 10 commandTag string 11 rowsAffected int64 12 }{ 13 {"UPDATE 1", 1}, 14 {"UPDATE 123456789", 123456789}, 15 {"INSERT 0 1", 1}, 16 {"INSERT 0 123456789", 123456789}, 17 } 18 19 for _, bm := range benchmarks { 20 ct := CommandTag{s: bm.commandTag} 21 b.Run(bm.commandTag, func(b *testing.B) { 22 var n int64 23 for i := 0; i < b.N; i++ { 24 n = ct.RowsAffected() 25 } 26 if n != bm.rowsAffected { 27 b.Errorf("expected %d got %d", bm.rowsAffected, n) 28 } 29 }) 30 } 31 } 32 33 func BenchmarkCommandTagTypeFromString(b *testing.B) { 34 ct := CommandTag{s: "UPDATE 1"} 35 36 var update bool 37 for i := 0; i < b.N; i++ { 38 update = strings.HasPrefix(ct.String(), "UPDATE") 39 } 40 if !update { 41 b.Error("expected update") 42 } 43 } 44 45 func BenchmarkCommandTagInsert(b *testing.B) { 46 benchmarks := []struct { 47 commandTag string 48 is bool 49 }{ 50 {"INSERT 1", true}, 51 {"INSERT 1234567890", true}, 52 {"UPDATE 1", false}, 53 {"UPDATE 1234567890", false}, 54 {"DELETE 1", false}, 55 {"DELETE 1234567890", false}, 56 {"SELECT 1", false}, 57 {"SELECT 1234567890", false}, 58 {"UNKNOWN 1234567890", false}, 59 } 60 61 for _, bm := range benchmarks { 62 ct := CommandTag{s: bm.commandTag} 63 b.Run(bm.commandTag, func(b *testing.B) { 64 var is bool 65 for i := 0; i < b.N; i++ { 66 is = ct.Insert() 67 } 68 if is != bm.is { 69 b.Errorf("expected %v got %v", bm.is, is) 70 } 71 }) 72 } 73 }