mirror of
https://github.com/vlang/v.git
synced 2025-09-10 07:47:20 -04:00
54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/asn1"
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
type Example struct {
|
|
Greeting string `asn1:"utf8"`
|
|
Answer int
|
|
Tipe asn1.ObjectIdentifier `asn1:"explicit,tag:1"`
|
|
}
|
|
|
|
func main() {
|
|
iterations := 1000
|
|
expected_output := []byte{0x30, 18, 12, 5, 72, 101, 108, 108, 111, 2, 1, 42, 0xA1,
|
|
6, 6, 4, 43, 6, 1, 3}
|
|
|
|
oid := []int{1, 3, 6, 1, 3}
|
|
|
|
ex := Example{
|
|
Greeting: "Hello",
|
|
Answer: 42,
|
|
Tipe: asn1.ObjectIdentifier(oid),
|
|
}
|
|
fmt.Println("Benchmarking golang Marshal...")
|
|
var totalMarshalTime int64
|
|
for i := 0; i < iterations; i++ {
|
|
start := time.Now()
|
|
_, err := asn1.Marshal(ex)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
totalMarshalTime += time.Since(start).Microseconds()
|
|
}
|
|
avgMarshalTime := totalMarshalTime / int64(iterations)
|
|
fmt.Printf("Average Marshal time: %d µs\n", avgMarshalTime)
|
|
|
|
fmt.Println("Benchmarking Unmarshal...")
|
|
var totalUnmarshalTime int64
|
|
var xx Example
|
|
for i := 0; i < iterations; i++ {
|
|
start := time.Now()
|
|
_, err := asn1.Unmarshal(expected_output, &xx)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
totalUnmarshalTime += time.Since(start).Microseconds()
|
|
}
|
|
avgUnmarshalTime := totalUnmarshalTime / int64(iterations)
|
|
fmt.Printf("Average Unmarshal time: %d µs\n", avgUnmarshalTime)
|
|
}
|