<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()))

    }
    主站蜘蛛池模板: 久久久久久AV无码免费网站下载 | 亚洲日韩区在线电影| 国产免费AV片在线观看播放| 四虎影在线永久免费四虎地址8848aa| 亚洲国产精华液2020| 最近中文字幕无免费视频| 久久国产亚洲精品| 老司机永久免费网站在线观看| 亚洲午夜福利在线视频| 精品久久洲久久久久护士免费| 亚洲AV成人精品日韩一区| 免费人成在线观看网站品爱网日本| 国产精品亚洲专区在线播放| 亚洲成AV人网址| 国产精品免费一区二区三区四区| 亚洲国产综合专区在线电影| 2015日韩永久免费视频播放| 亚洲男人天堂2018av| 免费毛片在线视频| 一个人看的免费观看日本视频www| 久久精品亚洲男人的天堂| 男人进去女人爽免费视频国产| 久久亚洲AV成人无码国产| 性做久久久久久免费观看| 久久久久亚洲精品无码网址色欲 | 亚洲精品网站在线观看不卡无广告 | 亚洲精品狼友在线播放| 日本免费大黄在线观看| 亚洲一区二区三区高清在线观看| 国产免费观看网站| 国产精品白浆在线观看免费| 亚洲国产成人精品激情| 免费一级毛片在线播放| 久久久久久AV无码免费网站| 亚洲人成人网站18禁| 亚洲日韩激情无码一区| 无码中文在线二区免费| 国产男女爽爽爽免费视频| 亚洲国产精品综合久久2007| 日韩精品成人亚洲专区| 成年人视频免费在线观看|