<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    咖啡伴侶

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

    bson和json

    Posted on 2013-09-23 14:08 oathleo 閱讀(3291) 評論(0)  編輯  收藏 所屬分類: Golang
    測試1000個數據 每個數據10個字節,分別使用字節、json、bson方式 存儲,并用gzip壓縮

    結果bson比json還大一點,確實出乎意料

    個人結論是BSON對比json更加適合存儲,在傳輸上沒有太大優勢

      BSON相對JSon
    1.更快的遍歷速度
    2.操作更簡易
    3.增加了額外的數據類型

    raw data: 10000
    raw data gzip compress: 6553

    json string: 44524
    json byte: 44524
    json gzip compress: 8125

    bson byte: 46910
    bson gzip compress: 9721


    package main

    import (
        "bytes"
        "compress/gzip"
        "fmt"
        "labix.org/v2/mgo/bson"
        "math/rand"
    )

    type HisCollection struct {
        RTValues []RTValue
    }

    type RTValue struct {
        Time   int32
        Status int16
        Value  float32
    }

    func main() {
        fmt.Println("start")

        size := 1000
        col := make([]RTValue, size)

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

        his := HisCollection{RTValues: col}
        data, err := bson.Marshal(&his)
        if err != nil {
            panic(err)
        }
        //    fmt.Println(data)
        fmt.Println("bson byte:", len(data))

        var compress_data_buf bytes.Buffer
        writer := gzip.NewWriter(&compress_data_buf)
        defer writer.Close()

        writer.Write(data)
        writer.Flush()

        fmt.Println("bson gzip compress:",len(compress_data_buf.Bytes()))

    }

    package main

    import (
        "bytes"
        "compress/gzip"
        "fmt"
        "math/rand"
        "openplant/opnet"
    )

    func main() {
        var compress_data_buf bytes.Buffer
        writer := gzip.NewWriter(&compress_data_buf)
        defer writer.Close()

        size := 1000
        for i := 0; i < size; i++ {
            writer.Write(opnet.WarpInt32ToByte(int32(i)))
            writer.Write(opnet.WarpInt16ToByte(int16(100)))
            writer.Write(opnet.WarpFloat32ToByte(rand.Float32()))
        }

        writer.Flush()

        fmt.Println("raw data:", 10000)

        fmt.Println("raw data gzip compress:", len(compress_data_buf.Bytes()))

    }
    111

    package main

    import (
        "bytes"
        "compress/gzip"
        "encoding/json"
        "fmt"
        "math/rand"
    )

    type HisCollection struct {
        RTValues []RTValue
    }

    type RTValue struct {
        Time   int32
        Status int16
        Value  float32
    }

    func main() {
        fmt.Println("start")

        size := 1000
        col := make([]RTValue, size)

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

        his := HisCollection{RTValues: col}

        data, err := json.Marshal(&his)

        fmt.Println("json string:", string(data))
        fmt.Println("json string:", len(string(data)))

        if err != nil {
            panic(err)
        }
        //    fmt.Println(data)
        fmt.Println("json byte:", len(data))

        var compress_data_buf bytes.Buffer
        writer := gzip.NewWriter(&compress_data_buf)
        defer writer.Close()

        writer.Write(data)
        writer.Flush()

        fmt.Println("json gzip compress:", len(compress_data_buf.Bytes()))

    }
    主站蜘蛛池模板: 免费日本一区二区| 伊人免费在线观看| 免费无码又爽又刺激聊天APP| 久久夜色精品国产亚洲AV动态图| 二区久久国产乱子伦免费精品| 亚洲精品成人在线| 一级毛片一级毛片免费毛片| 俄罗斯极品美女毛片免费播放| 天天综合亚洲色在线精品| 国产大片线上免费看| 男人和女人高潮免费网站| 亚洲VA综合VA国产产VA中| 一级一级一片免费高清| 亚洲老妈激情一区二区三区| 久久不见久久见免费视频7 | 亚洲av无码专区在线电影天堂| 成人毛片视频免费网站观看| 亚洲精品第一国产综合亚AV| 可以免费观看一级毛片黄a| 国产黄片不卡免费| 亚洲国产国产综合一区首页| 波多野结衣中文字幕免费视频 | 国产大片线上免费观看| 亚洲av无码专区在线电影天堂| 亚洲精品线路一在线观看| 国产成人AV免费观看| 亚洲伊人久久大香线蕉| 免费成人在线观看| 久久久久久久岛国免费播放| 亚洲最大中文字幕| www.亚洲色图.com| 日韩精品久久久久久免费| 亚洲欧美成aⅴ人在线观看| 亚洲人成网站色在线入口| 99视频在线免费看| 亚洲AV永久无码精品放毛片| 亚洲无线观看国产精品| 久久精品免费一区二区喷潮| av午夜福利一片免费看久久| 亚洲精品乱码久久久久久下载| 国产一区在线观看免费|