gpt4 book ai didi

c++ - 在磁盘上写入时,我应该使用尽可能小的类型吗?

转载 作者:行者123 更新时间:2023-11-27 23:56:01 25 4
gpt4 key购买 nike

在我的应用程序中,我必须在二进制文件上编写一些数据结构,其中很多都包含枚举。我应该将枚举转换为尽可能小的类型 (qint8) 还是应该坚持使用 32 位 (qint32)?

它会产生积极还是消极的影响?我最关心的是速度而不是空间。

QDataStream& operator<<(QDataStream &out, const Event &event)
{
out << (qint8)event.myEnum;
//Also write other fields...
}

我看过一些反对这种优化的帖子(thisthis one),但它们是关于内存而不是磁盘写入的。

编辑: 澄清一下:当使用 QDataStream 时,我无法直接写入或读取 enum,我必须将其转换为整数类型。我假设 8 位就足够了,因为在我的上下文中,值总是少于 127 个(而且我也使用 -1)。

最佳答案

使用最小的类型会有所帮助,因为您可以降低流数据速率,并且将花费更少的时间和精力(想想移动设备!)来写出来。如果您的代码生成数据的速度比磁盘消耗数据的速度慢,那么使用更大的类型时挂钟时间不会改变,但是您选择的数据类型越大,能源消耗仍然会更高。

总的来说,我更担心你的序列化是否是面向 future 的 - 确保你在适当的级别对文件进行版本化(例如,整个文件一个版本,每个小节一个版本,甚至每个结构版本- 取决于代码的结构和意义)。

关于c++ - 在磁盘上写入时,我应该使用尽可能小的类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42580783/

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