Skip to content

Commit 13e48e6

Browse files
Calculate Item Size
1 parent 9b4c97a commit 13e48e6

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

db-esdk-performance-testing/benchmarks/go/benchmark/benchmark_tests.go

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,68 @@ import (
2323

2424
// === Helper Functions ===
2525

26+
func CalculateItemSize(item map[string]types.AttributeValue) int {
27+
totalSize := 0
28+
29+
for attributeName, attributeValue := range item {
30+
// Add attribute name size
31+
totalSize += len(attributeName)
32+
33+
// Add attribute value size
34+
totalSize += calculateAttributeValueSize(attributeValue)
35+
}
36+
37+
return totalSize
38+
}
39+
40+
func calculateAttributeValueSize(av types.AttributeValue) int {
41+
switch v := av.(type) {
42+
case *types.AttributeValueMemberS:
43+
return len(v.Value)
44+
case *types.AttributeValueMemberN:
45+
return len(v.Value)
46+
case *types.AttributeValueMemberB:
47+
return len(v.Value)
48+
case *types.AttributeValueMemberBOOL:
49+
return 1
50+
case *types.AttributeValueMemberNULL:
51+
return 1
52+
case *types.AttributeValueMemberSS:
53+
size := 0
54+
for _, s := range v.Value {
55+
size += len(s)
56+
}
57+
return size
58+
case *types.AttributeValueMemberNS:
59+
size := 0
60+
for _, n := range v.Value {
61+
size += len(n)
62+
}
63+
return size
64+
case *types.AttributeValueMemberBS:
65+
size := 0
66+
for _, b := range v.Value {
67+
size += len(b)
68+
}
69+
return size
70+
case *types.AttributeValueMemberL:
71+
size := 0
72+
for _, item := range v.Value {
73+
size += calculateAttributeValueSize(item)
74+
}
75+
return size
76+
case *types.AttributeValueMemberM:
77+
size := 0
78+
for key, value := range v.Value {
79+
size += len(key) // Nested attribute name
80+
size += calculateAttributeValueSize(value)
81+
}
82+
return size
83+
default:
84+
return 0
85+
}
86+
}
87+
2688
// runBatchPutGetCycle performs a BatchWriteItem-BatchGetItem cycle with 25 items and measures performance
2789
func (b *DBESDKBenchmark) runBatchPutGetCycle(data []byte) (float64, float64, error) {
2890
ctx := context.Background()

0 commit comments

Comments
 (0)