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序列号空间占用大小

  • 相关阅读:
    Python基础 | pandas中dataframe的整合与形变(merge & reshape)
    Python基础 | pandas中数据的筛选(index & subset)
    Python基础 | 关于“循环”那些事
    Python基础 | 数据文件的读写
    Python基础 | 字符串操作
    如何用数据说谎 How to lie with data
    浅谈“数据敏感度”
    爬虫 | IT桔子互联网公司死亡名单
    从一道面试题谈数据推算方法
    爬虫 | cnblog文章收藏排行榜(“热门文摘”)
  • 原文地址:https://www.cnblogs.com/lilei2blog/p/15551370.html
Copyright © 2011-2022 走看看