gpt4 book ai didi

c++ - 独立于平台的表示中涉及哪些方法和权衡?

转载 作者:太空狗 更新时间:2023-10-29 23:53:24 26 4
gpt4 key购买 nike

在说任何事情之前我必须说,尽管我是一名经验丰富的 Java 程序员,但我对 C/C++ 编程还是比较陌生。

我必须以一种可以从不同操作系统和平台访问的格式保存二进制文件。它应该非常有效,因为我必须处理大量数据。我应该为此调查哪些方法?主要优点和缺点是什么?

目前我正在考虑使用网络符号(类似 htonl 的东西在 unixwindows 下都可用)。有没有更好的办法?

最佳答案

Network order (big-endian) 是某种事实上的标准。但是,如果您的程序将主要用于 x86 (这是小端),出于性能原因,您可能希望坚持使用该协议(protocol)(该协议(protocol)仍可在大端机器上使用,但它们会对性能产生影响)。

此外htonl (转换 32 位值),还有 htons(16 位)和 bswap_64(64 位的非标准)。

如果您想要二进制格式,但又想抽象出一些细节以简化序列化和反序列化,请考虑 Protocol BuffersThrift . Protocol Buffers 是可更新的(您可以在不破坏现有代码的情况下向模式添加可选或重复(0 个或更多)字段);不确定 Thrift。

但是,在过早优化之前,请考虑解析是否真的是瓶颈。如果读取文件的每一行都需要数据库查询或计算,您可以使用更具可读性的格式,而不会对性能产生任何明显影响。

关于c++ - 独立于平台的表示中涉及哪些方法和权衡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11107162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com