@@ -78,10 +78,13 @@ func TestRoundTrip(t *testing.T) {
78
78
79
79
require .NoError (t , pw .Close ())
80
80
})
81
+ t .Logf ("size of parquet file %d bytes" , buffer .Len ())
81
82
82
83
t .Run ("read-verify" , func (t * testing.T ) {
83
84
rows , err := parquet .Read [* profilev1.Profile ](bytes .NewReader (buffer .Bytes ()), int64 (buffer .Len ()))
84
- require .Error (t , io .EOF , err )
85
+ if err != io .EOF {
86
+ require .NoError (t , err )
87
+ }
85
88
require .Equal (t , len (profiles ), len (rows ))
86
89
87
90
for pos := range rows {
@@ -106,3 +109,35 @@ func TestRoundTrip(t *testing.T) {
106
109
})
107
110
108
111
}
112
+
113
+ func BenchmarkWriteProfiles (t * testing.B ) {
114
+ var (
115
+ profilePaths = []string {
116
+ "testdata/heap" ,
117
+ "testdata/profile" ,
118
+ }
119
+ profiles = make ([]* profilev1.Profile , len (profilePaths ))
120
+ )
121
+
122
+ buffer := new (bytes.Buffer )
123
+ sch := parquet .SchemaOf (& profilev1.Profile {})
124
+ pw := parquet .NewWriter (buffer , sch )
125
+
126
+ require .NoError (t , pw .Close ())
127
+ for pos := range profilePaths {
128
+ profiles [pos ] = parseProfile (t , profilePaths [pos ])
129
+ }
130
+
131
+ t .ReportAllocs ()
132
+
133
+ for n := 0 ; n < t .N ; n ++ {
134
+ for pos := range profiles {
135
+ require .NoError (t , pw .Write (profiles [pos ]), "error writing profile " , profilePaths [pos ])
136
+ }
137
+ }
138
+
139
+ require .NoError (t , pw .Close ())
140
+
141
+ t .Logf ("% 6d profiles % 12d bytes %12f bytes/per-profile" , t .N , buffer .Len (), float64 (buffer .Len ())/ float64 (t .N ))
142
+
143
+ }
0 commit comments