Example #1
0
 public static Offset <FlatA> CreateFlatA(FlatBufferBuilder builder,
                                          VectorOffset a = default(VectorOffset),
                                          VectorOffset b = default(VectorOffset),
                                          VectorOffset c = default(VectorOffset),
                                          VectorOffset d = default(VectorOffset),
                                          VectorOffset e = default(VectorOffset))
 {
     builder.StartObject(5);
     FlatA.AddE(builder, e);
     FlatA.AddD(builder, d);
     FlatA.AddC(builder, c);
     FlatA.AddB(builder, b);
     FlatA.AddA(builder, a);
     return(FlatA.EndFlatA(builder));
 }
Example #2
0
 public static FlatA GetRootAsFlatA(ByteBuffer _bb, FlatA obj)
 {
     return(obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb));
 }
Example #3
0
        private static void test_flatbuf(A data)
        {
            // 序列化
            Timer.beginTime();
            var fbb = new FlatBufferBuilder(1);

            var offset_a = FlatA.CreateAVector(fbb, data.a);
            var offset_b = FlatA.CreateBVector(fbb, data.b);
            var offset_c = FlatA.CreateCVector(fbb, data.c);

            var offset_d_string = new StringOffset[data.d.Length];

            for (int i = 0; i < data.d.Length; i++)
            {
                offset_d_string[i] = fbb.CreateString(data.d[i]);
            }
            var offset_d = FlatA.CreateDVector(fbb, offset_d_string);

            var offset_e_list = new Offset <FlatE> [data.e.Length];

            for (int i = 0; i < data.e.Length; i++)
            {
                var item       = data.e[i];
                var offset_e_d = fbb.CreateString(item.d);
                offset_e_list[i] = FlatE.CreateFlatE(fbb, item.a, item.b, item.c, offset_e_d);
            }
            var offset_e = FlatA.CreateEVector(fbb, offset_e_list);

            var offset_flat_a = FlatA.CreateFlatA(fbb, offset_a, offset_b, offset_c, offset_d, offset_e);

            FlatA.FinishFlatABuffer(fbb, offset_flat_a);
            Timer.endTime("flatbuf 序列化");

            // 反序列化
            Timer.beginTime();
            var buffer = fbb.DataBuffer;
            var flatA  = FlatA.GetRootAsFlatA(buffer);

            Timer.endTime("flatbuf 反序列化");
            var ret = new A();

            ret.a = new bool[flatA.ALength];
            for (int i = 0; i < flatA.ALength; i++)
            {
                ret.a[i] = flatA.GetA(i);
            }
            ret.b = new int[flatA.BLength];
            for (int i = 0; i < flatA.BLength; i++)
            {
                ret.b[i] = flatA.GetB(i);
            }
            ret.c = new float[flatA.CLength];
            for (int i = 0; i < flatA.CLength; i++)
            {
                ret.c[i] = flatA.GetC(i);
            }
            ret.d = new string[flatA.DLength];
            for (int i = 0; i < flatA.DLength; i++)
            {
                ret.d[i] = flatA.GetD(i);
            }
            ret.e = new E[flatA.ELength];
            for (int i = 0; i < flatA.ELength; i++)
            {
                var tmpE = flatA.GetE(i);
                ret.e[i] = new E()
                {
                    a = tmpE.A,
                    b = tmpE.B,
                    c = tmpE.C,
                    d = tmpE.D,
                };
            }
            Timer.endTime("flatbuf 反序列化并且获取所有数据一次");

            // 内存占用
            Console.WriteLine(string.Format(" flatbuf 总占用内存 {0} byte.", buffer.Length));
        }