小编Shi*_*wal的帖子

Flatbuffers与CBOR

请帮助建议FlatbuffersCBOR协议的优缺点。这两种二进制格式都声称在它们的网站上是不错的,但是我无法在两者之间做出一些很好的区别。

平面缓冲区:

优点:

  1. 严格输入FlatBuffer,Cap'n proto和其他类似解决方案被视为提高性能的关键点,因为不需要额外的编码/解码。
  2. 数据模型允许使用紧凑的数据结构和快速访问轻松地对类型化的对象进行偏移
  3. FlatBuffers不需要解析/拆包步骤即可生成辅助表示形式,然后您才能访问经常与按对象存储分配相关的数据。

坏处:

  1. 像CBOR一样新的和不标准化的

CBOR

优点:

  1. 可以完全在流中创建和处理而无需额外的内存
  2. 不必预先定义任何模式,因为我们的数据是动态的且可变的
  3. 这是IETF的一项开放国际标准,因此比专有标准更好。
  4. 它设计用于低内存,非转换,基于流的处理,同时还提供其他数据类型的扩展

坏处:

  1. CBOR表示它遵循JSON模型(因此不是严格类型的对象)
  2. 它以相同类型的对象(字符串,整数,映射等)开头。

PS:
与平缓缓冲区相比,感觉CBOR中的类型管理将在性能上付出高昂的代价,但是由于CBOR是标准化协议,因此如果这种差异不大,我倾向于使用它。请让我知道你们都推荐两个,为什么。

json protocol-buffers cbor flatbuffers capnproto

8
推荐指数
3
解决办法
2242
查看次数

Perl:elsif,Python:elif,C/CPP/Java:否则如果

这是代码在Perl上给我错误.


...
else if (exists($framename{$presFrame}) && (($framename{$presFrame}) < = $j))
...
Run Code Online (Sandbox Code Playgroud)

framename是一个哈希,presFrame是一个关键存在于framename

编辑:

在正确答案中提到的Perl中实现if/else语法有点不同.

perl if-statement compiler-errors key syntax-error

-2
推荐指数
1
解决办法
155
查看次数