<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 閱讀(3301) 評論(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永久无码精品三区在线| 麻豆91免费视频| 高清在线亚洲精品国产二区| 亚洲精品无码mⅴ在线观看| 韩国日本好看电影免费看| 日韩色日韩视频亚洲网站| 亚洲成A∨人片天堂网无码| 又硬又粗又长又爽免费看 | 人妖系列免费网站观看| 国产成人精品曰本亚洲79ren| 精品国产福利尤物免费| 久久精品国产亚洲香蕉| 国产高清不卡免费在线| 亚洲免费在线观看视频| 在线免费观看一级毛片| 羞羞视频免费网站日本| 亚洲国产精品一区二区成人片国内| 久久黄色免费网站| 亚洲一区在线视频| 亚洲成a人片在线观看老师| 免费看黄的成人APP| 亚洲av乱码一区二区三区 | 久久精品国产99精品国产亚洲性色| 久久国产色AV免费看| 亚洲色精品VR一区区三区| 免费人成网站7777视频| 久久免费福利视频| 亚洲爆乳少妇无码激情| 亚洲gv猛男gv无码男同短文| 曰曰鲁夜夜免费播放视频 | 亚洲春色在线观看| 免费大片黄手机在线观看| 无码日韩精品一区二区三区免费 | 免费的全黄一级录像带| 亚洲精品无码久久久久APP| 亚洲精品二区国产综合野狼| 在线观看av永久免费| 99免费在线视频|