zoukankan      html  css  js  c++  java
  • protobuf和json字符串大小对比

    json字符串拼装程序

    package org.proto;
    
    import com.alibaba.fastjson.JSON;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    
    public class Test3 {
    
        public static void main(String[] args) {
            Random rand = new Random();
    
            List<MyPoint> list = new ArrayList<>();
    
            for(int i=1000000;i<1500000;i++){
                MyPoint myPoint = new MyPoint ();
    
                myPoint.setVin("M"+i);
    
                myPoint.setLng(11600000 + rand.nextInt(100000));
                myPoint.setLat(3900000 + rand.nextInt(100000));
    
                list.add(myPoint);
            }
    
            String str = JSON.toJSON(list).toString();
    
            System.out.println(str.length());
        }
    
        public static class MyPoint {
            private String vin;
            private int lng;
            private int lat;
    
            public String getVin() {
                return vin;
            }
    
            public void setVin(String vin) {
                this.vin = vin;
            }
    
            public int getLng() {
                return lng;
            }
    
            public void setLng(int lng) {
                this.lng = lng;
            }
    
            public int getLat() {
                return lat;
            }
    
            public void setLat(int lat) {
                this.lat = lat;
            }
        }
    }

    json字符串空间大小

    protobuf的数据结构

    option java_outer_classname = "TestProtoPoint2";
    option java_package = "org.proto";
    
    message Points{
        repeated MyPoint myPoint=1;
    }
    
    message MyPoint{
         optional string vin=1;
         optional int32 lng=2;
         optional int32 lat=3;
    }

    protobuf数据拼装程序

    package org.proto;
    
    import java.io.FileOutputStream;
    import java.util.Random;
    
    public class Test2 {
    
        public static void main(String[] args) throws Exception{
    
            final TestProtoPoint2.Points.Builder builder = TestProtoPoint2.Points.newBuilder();
    
            Random rand = new Random();
    
            for(int i=1000000;i<1500000;i++){
                TestProtoPoint2.MyPoint.Builder myPoint = TestProtoPoint2.MyPoint.newBuilder();
    
                myPoint.setVin("M"+i);
    
                myPoint.setLng(11600000 + rand.nextInt(100000));
                myPoint.setLat(3900000 + rand.nextInt(100000));
    
                builder.addMyPoint(myPoint);
            }
    
            byte[] bs = builder.build().toByteArray();
    
            FileOutputStream fos = new java.io.FileOutputStream("d:/test.pbf");
    
            fos.write(bs);
            fos.flush();
            fos.close();
    
            System.out.println(bs.length);
        }
    }

    protobuf序列号空间占用大小

  • 相关阅读:
    重写/覆盖基类的事件
    关于“日志”的输出控制
    WPF中DataGrid垂直滚动条滚动后导致每行CheckBox选择错乱
    WPF窗体应用程序开发
    C# 操作自定义config文件
    WPF绑定数据源之RelativeSource
    C# http请求 设置代理(标题可以作为搜索关键字)
    前端加载特效
    实现不同的项目,用不同的git 账号提交
    Casbin 使用记录
  • 原文地址:https://www.cnblogs.com/lilei2blog/p/15551370.html
Copyright © 2011-2022 走看看