咖啡伴侶

          呆在上海
          posts - 163, comments - 156, trackbacks - 0, articles - 2

          go原生數據效率

          Posted on 2013-09-29 09:57 oathleo 閱讀(1173) 評論(0)  編輯  收藏 所屬分類: Golang
          接著上回,對象序列化和反序的效率已經很高,試試原生數據的效率

          先上代碼
          package main

          import (
              "fmt"
              "math/rand"
              "opbuf"
              "time"
          )

          type RTValue struct {
              Time   int32
              Status int16
              Value  float32
          }

          func main() {

              size := 1000000
              col := make([]RTValue, size)
              for i := 0; i < size; i++ {
                  col[i] = RTValue{Time: int32(i), Status: int16(i), Value: rand.Float32()}
              }

              fmt.Println("send data:", col[size-1])
              var opbuff *opbuf.OPBuffer = opbuf.NewOPBuffer()
              start := time.Now().UnixNano()
              for i := 0; i < size; i++ {
                  //        opbuff.PutByte(col[i].Data)
                  opbuff.PutInt32(col[i].Time)
                  opbuff.PutInt16(col[i].Status)
                  opbuff.PutFloat32(col[i].Value)
              }
              fmt.Println("send cost:", (time.Now().UnixNano()-start)/1000000)

              opbuff.Flush()

              start = time.Now().UnixNano()
              for i := 0; i < size; i++ {
                  col[i].Time,_ = opbuff.GetInt32()
                  col[i].Status,_ = opbuff.GetInt16()
                  col[i].Value,_ = opbuff.GetFloat32()
              }
              fmt.Println("rev cost:", (time.Now().UnixNano()-start)/1000000)
              fmt.Println("rev data:", col[size-1])

          }
          123

          Go原生代碼性能:
          total record: 1000000
          send data: {999999 16959 0.69153386}
          send cost: 93
          rev cost: 61
          rev data: {999999 16959 0.69153386}
           
          結論:
          1.不管什么語言,大批量同類型數據的傳輸,原生性能還是比第三方序列化 效率高很多
          2.C++ 使用memcpy put 原始類型,效率還是比go高很多
          C++原生代碼性能:
          total record 1000000
          time pack 11 ms
          time unpack 57 ms
           
           
          主站蜘蛛池模板: 镇江市| 五寨县| 张家界市| 子长县| 会东县| 茂名市| 阜新市| 汝阳县| 枣强县| 漳州市| 营山县| 麻阳| 长沙市| 旺苍县| 西充县| 韩城市| 惠东县| 灵川县| 广安市| 德州市| 临沭县| 双鸭山市| 舞钢市| 鹤岗市| 临漳县| 台中市| 亚东县| 天台县| 吐鲁番市| 光山县| 邯郸市| 广宁县| 乐亭县| 衡山县| 扶风县| 苏尼特右旗| 安顺市| 大厂| 绥芬河市| 炎陵县| 获嘉县|