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  }