FlatBuffers初体验

1. 从github上将其签下: https://github.com/google/flatbuffers/archive/master.zip


2. 编译, 用的是cmake.


好像不能识别环境变量, 得手动改一下CMAKE_CXX_COMPILER/CMAKE_C_COMPILER, 默认是c++和c.  感觉还真不如make方便. 



3. 编写fbs, 非常简单.

namespace cn;
table Monster {
  pos:string;
  name:string;
  ret:int;
}
root_type Monster;
另存为moster.fbs


4. 生成java源文件, 运行下面的命令, 就会生成一个cn文件夹, 其中有一个Monster.java.

[root@xzw bin]# flatc -j monster.fbs


5. 消息构造, 在编程方式上非常奇怪, 完全没有protobuf方便.

public static void main(String[] args)
	{
		FlatBufferBuilder fbb = new FlatBufferBuilder(1);
		int ofst0 = fbb.createString("jack");
		int ofst1 = fbb.createString("10.10");
		{
			Monster.startMonster(fbb);
			Monster.addName(fbb, ofst0);
			Monster.addPos(fbb, ofst1);
			Monster.addRet(fbb, 0x11223344);
			Monster.finishMonsterBuffer(fbb, Monster.endMonster(fbb));
		}
		Monster m = Monster.getRootAsMonster(fbb.dataBuffer());
		Misc.printf(fbb.dataBuffer().array());
		Misc.printf("name: %s, pos: %s, ret: %08X\n", m.name(), m.pos(), m.ret());
	}

6. 运行结果, 很明显, 序列化的二进制体积上要比protobuf大得多, 当然这个消息的内容本身比较小, 所以与内容无关的东西占的比重更大.



7. 其它, 生成的代码量非常小, c++代码只有一个头文件. 编译起来相信要比protobuf快得多, 感觉flatbuffer还比较骨感, 不知道咋转成json, xml等.

也没有eclipse插件,  相信编写起来不会太舒服. 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值