| // Copyright 2015 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package internal |
| |
| import ( |
| "mojo/public/go/bindings" |
| "mojom/tests/transcoder_testcases" |
| "testing" |
| "v.io/v23/vdl" |
| "v.io/v23/vom" |
| "v.io/x/mojo/transcoder" |
| ) |
| |
| var customer transcoder_testcases.Customer = transcoder_testcases.Customer{ |
| Name: "John Smith", |
| Id: 1, |
| Active: true, |
| Address: transcoder_testcases.AddressInfo{ |
| Street: "1 Main St.", |
| City: "Palo Alto", |
| State: "CA", |
| Zip: "94303", |
| }, |
| Credit: transcoder_testcases.CreditReport{ |
| Agency: transcoder_testcases.CreditAgency_Equifax, |
| Report: &transcoder_testcases.AgencyReportEquifaxReport{transcoder_testcases.EquifaxCreditReport{'A'}}, |
| }, |
| } |
| |
| var vdlCustomer Customer = Customer{ |
| Name: "John Smith", |
| Id: 1, |
| Active: true, |
| Address: AddressInfo{ |
| Street: "1 Main St.", |
| City: "Palo Alto", |
| State: "CA", |
| Zip: "94303", |
| }, |
| Credit: CreditReport{ |
| Agency: CreditAgencyEquifax, |
| Report: AgencyReportEquifaxReport{EquifaxCreditReport{'A'}}, |
| }, |
| } |
| |
| func BenchmarkVdlToMojomTranscoding(b *testing.B) { |
| for i := 0; i < b.N; i++ { |
| transcoder.ToMojom(customer) |
| } |
| } |
| |
| func BenchmarkMojomToVdlTranscoding(b *testing.B) { |
| data := mojomBytesCustomer() |
| t := vdl.TypeOf(customer) |
| for i := 0; i < b.N; i++ { |
| var c Customer |
| transcoder.ValueFromMojo(&c, data, t) |
| } |
| } |
| |
| func BenchmarkVomEncoding(b *testing.B) { |
| for i := 0; i < b.N; i++ { |
| vom.Encode(vdlCustomer) |
| } |
| } |
| |
| func BenchmarkVomDecoding(b *testing.B) { |
| data := vomBytesCustomer() |
| for i := 0; i < b.N; i++ { |
| var c Customer |
| vom.Decode(data, &c) |
| } |
| } |
| |
| func BenchmarkMojoEncoding(b *testing.B) { |
| for i := 0; i < b.N; i++ { |
| enc := bindings.NewEncoder() |
| customer.Encode(enc) |
| enc.Data() |
| } |
| } |
| |
| func BenchmarkMojoDecoding(b *testing.B) { |
| data := mojomBytesCustomer() |
| for i := 0; i < b.N; i++ { |
| dec := bindings.NewDecoder(data, nil) |
| customer.Decode(dec) |
| } |
| } |
| |
| func mojomBytesCustomer() []byte { |
| enc := bindings.NewEncoder() |
| err := customer.Encode(enc) |
| if err != nil { |
| panic(err) |
| } |
| data, _, err := enc.Data() |
| if err != nil { |
| panic(err) |
| } |
| return data |
| } |
| |
| func vomBytesCustomer() []byte { |
| data, err := vom.Encode(vdlCustomer) |
| if err != nil { |
| panic(err) |
| } |
| return data |
| } |