本文主要是介绍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插件, 相信编写起来不会太舒服.
这篇关于FlatBuffers初体验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!