github.com/aavshr/aws-sdk-go@v1.41.3/private/protocol/jsonrpc/build_bench_test.go (about) 1 //go:build bench 2 // +build bench 3 4 package jsonrpc_test 5 6 import ( 7 "bytes" 8 "encoding/json" 9 "testing" 10 11 "github.com/aavshr/aws-sdk-go/aws" 12 "github.com/aavshr/aws-sdk-go/aws/request" 13 "github.com/aavshr/aws-sdk-go/awstesting" 14 "github.com/aavshr/aws-sdk-go/private/protocol/json/jsonutil" 15 "github.com/aavshr/aws-sdk-go/private/protocol/jsonrpc" 16 "github.com/aavshr/aws-sdk-go/service/dynamodb" 17 "github.com/aavshr/aws-sdk-go/service/dynamodb/dynamodbattribute" 18 ) 19 20 func BenchmarkJSONRPCBuild_Simple_dynamodbPutItem(b *testing.B) { 21 svc := awstesting.NewClient() 22 23 params := getDynamodbPutItemParams(b) 24 25 for i := 0; i < b.N; i++ { 26 r := svc.NewRequest(&request.Operation{Name: "Operation"}, params, nil) 27 jsonrpc.Build(r) 28 if r.Error != nil { 29 b.Fatal("Unexpected error", r.Error) 30 } 31 } 32 } 33 34 func BenchmarkJSONUtilBuild_Simple_dynamodbPutItem(b *testing.B) { 35 svc := awstesting.NewClient() 36 37 params := getDynamodbPutItemParams(b) 38 39 for i := 0; i < b.N; i++ { 40 r := svc.NewRequest(&request.Operation{Name: "Operation"}, params, nil) 41 _, err := jsonutil.BuildJSON(r.Params) 42 if err != nil { 43 b.Fatal("Unexpected error", err) 44 } 45 } 46 } 47 48 func BenchmarkEncodingJSONMarshal_Simple_dynamodbPutItem(b *testing.B) { 49 params := getDynamodbPutItemParams(b) 50 51 for i := 0; i < b.N; i++ { 52 buf := &bytes.Buffer{} 53 encoder := json.NewEncoder(buf) 54 if err := encoder.Encode(params); err != nil { 55 b.Fatal("Unexpected error", err) 56 } 57 } 58 } 59 60 func getDynamodbPutItemParams(b *testing.B) *dynamodb.PutItemInput { 61 av, err := dynamodbattribute.ConvertToMap(struct { 62 Key string 63 Data string 64 }{Key: "MyKey", Data: "MyData"}) 65 if err != nil { 66 b.Fatal("benchPutItem, expect no ConvertToMap errors", err) 67 } 68 return &dynamodb.PutItemInput{ 69 Item: av, 70 TableName: aws.String("tablename"), 71 } 72 }