先上代碼:

looptimes:=10000
	u:=User{66,"nxin","beijing"}
	gobbegintimestamp:=strconv.FormatInt(time.Now().UTC().UnixNano(), 10)
	gobbeginint,_:=strconv.Atoi(gobbegintimestamp)
	fmt.Println("gob序列化==============================",gobbeginint)
	buf := new(bytes.Buffer)   //分配內存
	enc := gob.NewEncoder(buf) //創建基於buf內存的編碼器
	for i:=0;i<looptimes;i++ {

		err := enc.Encode(u)       //編碼器對結構體編碼
		if err != nil {
			log.Fatal(err)
		}
	}
	gobendtimestamp:=strconv.FormatInt(time.Now().UTC().UnixNano(), 10)
	gobendint,_:=strconv.Atoi(gobendtimestamp)
	fmt.Println("===================END===================",gobendint)

	jsonbegintimestamp:=strconv.FormatInt(time.Now().UTC().UnixNano(), 10)
	jsonbeginint,_:=strconv.Atoi(jsonbegintimestamp)
	fmt.Println("json序列化==============================", jsonbeginint)
	for j:=0;j<looptimes;j++ {
		_, e := json.Marshal(u)
		if e!=nil{
			log.Fatal(e)
		}
	}
	jsonendtimestamp:=strconv.FormatInt(time.Now().UTC().UnixNano(), 10)
	jsonendint,_:=strconv.Atoi(jsonendtimestamp)
	fmt.Println("===================END===================",jsonendint)


	protobufbegintimestamp:=strconv.FormatInt(time.Now().UTC().UnixNano(), 10)
	protobufbeginint,_:=strconv.Atoi(protobufbegintimestamp)
	fmt.Println("protobuf序列化==============================", protobufbeginint)
	hw:=&model.Helloworld{10,"wang","beijing"}
	for j:=0;j<looptimes;j++ {
		_, e := proto.Marshal(hw)
		if e!=nil{
			log.Fatal(e)
		}
	}
	protobufendtimestamp:=strconv.FormatInt(time.Now().UTC().UnixNano(), 10)
	protobufendint,_:=strconv.Atoi(protobufendtimestamp)
	fmt.Println("===================END===================",protobufendint)


	fmt.Println("json:",jsonendint-jsonbeginint)
	fmt.Println("gob:",gobendint-gobbeginint)
	fmt.Println("protobuf:",protobufendint-protobufbeginint)

嘗試了100,1000,10000,100000次的序列化對比時間:

總結:

總體來說protobuf的效率最高,gob的效率比json的還要低。

100次時三者相差不大。

=====================================================================

1000次時三者表現不穩地,測試出來的結果:


以前一種出現的次數更多。

=====================================================================

10000次出現的結果,protobuf效率明顯要高,但是json與gob差別不大:


=====================================================================

100000次出現的結果:


protobuf還是明顯優勢,但是gob有點落后。

綜上所述:在數據量小的時候三者差不多,但是數據量大了以后protobuf會更好,但是gob顯得力不從心,json表現中庸。