1

将数据与存储上的特定大小对齐是否有好处?例如,如果我可以选择使用 1 个字节或 4 个字节来存储信息,这是首选(假设存储大小无关紧要,只有优化)?

我问这个问题主要是因为我知道如果您要考虑内存中的值,它“很重要”(因此,例如,根据本网站上的另一个问题,.NET 布尔值是 4 个字节的原因)。

认为这无关紧要,但我使用的是 .NET 框架(特别是 C#)。

4

1 回答 1

1

如果您需要能够访问文件中的任何特定记录,您将需要某种索引或固定记录大小 - 但这是针对整个记录而不是记录的每个单独部分。我通常不会竭尽全力在存储中对齐 4 或 8 字节边界上的数据。当然,如果您一次读取一条记录,将其读取到内存中的对齐位置,那么您最终会得到对齐的数据来执行任何转换......所以它最终可能会在某种程度上交织在一起 - 但转换是可能是一次性的,而不是转换的频繁访问。

当然,存储大小对于优化很重要 - 因为从磁盘读取更少的数据会比读取更多数据便宜(通常......)。

除非您有固定记录大小等特定要求,否则我只会尝试设计存储以使其尽可能易于使用。如果您对性能有特定的关注领域,则应该对这些领域进行概要分析。例如,使用 UTF-16 编码字符串可能比 UTF-8 更有效,因为编码和解码应该需要更少的工作......即使它会占用更多空间。您应该测试这些而不是做出任何假设。请注意,您从哪里加载存储格式会产生很大的不同——通过网络、从机械磁盘、从固态驱动器......这些将具有不同的性能特征,这可能会导致很难设计出在所有情况下都是最快的。

于 2011-10-01T07:39:13.610 回答