新建文件名: main_test.go
方法名: Testxxx开头为单元测试方法; Benchmarkxxx为基准测试方法
package main
import (
"encoding/json"
"github.com/bytedance/sonic"
"testing"
)
type Student struct {
Name string
Age int
}
var stu = Student{
Name: "wade",
Age: 12,
}
//单元测试
func TestJson(t *testing.T) {
jsonStr, err := json.Marshal(stu)
if err != nil {
t.Fail()
}
var stu Student
err = json.Unmarshal(jsonStr, &stu)
if err != nil {
t.Fail()
}
}
//单元测试
func TestSonic(t *testing.T) {
//sonic是字节开源的json序列化框架,性能比go自带的要好
jsonStr, err := sonic.Marshal(stu)
if err != nil {
t.Fail()
}
var stu Student
err = sonic.Unmarshal(jsonStr, &stu)
if err != nil {
t.Fail()
}
}
//基准测试(性能测试)
func BenchmarkJson(b *testing.B) {
for i := 0; i < b.N; i++ {
jsonStr, _ := json.Marshal(stu)
var stu Student
_ = json.Unmarshal(jsonStr, &stu)
}
}
//基准测试(性能测试)
func BenchmarkSonic(b *testing.B) {
for i := 0; i < b.N; i++ {
jsonStr, _ := sonic.Marshal(stu)
var stu Student
_ = sonic.Unmarshal(jsonStr, &stu)
}
}