Mat*_*teo 2 c c++ performance compatibility
在说什么之前我不得不说,虽然我是一名经验丰富的Java程序员,但我对C/C++编程很陌生.
我必须以一种格式保存二进制文件,使其可以从不同的操作系统和平台访问.它应该非常有效,因为我必须处理大量数据.我应该采取什么方法进行调查?主要优点和缺点是什么?
网络订单(big-endian)是事实上的标准.但是,如果你的程序主要用于x86(这是一个小端),你可能会因为性能原因而坚持使用它(该协议仍可在大端机器上使用,但它们会对性能产生影响).
除了htonl(转换32位值)之外,还有htons(16位)和bswap_64(64位非标准).
如果你想要一个二进制格式,但是你想抽象出一些细节来简化序列化和反序列化,可以考虑使用Protocol Buffers或Thrift.协议缓冲区是可更新的(您可以向架构添加可选或重复(0或更多)字段,而不会破坏现有代码); Thrift不确定.
但是,在过早优化之前,请考虑解析是否真的是瓶颈.如果读取文件的每一行都需要数据库查询或计算,则可以使用更易读的格式,而不会对性能产生任何明显影响.
| 归档时间: |
|
| 查看次数: |
308 次 |
| 最近记录: |