数据大小和磁盘访问

时间:2011-10-01 07:20:14

标签: .net disk memory-alignment

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

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

我不认为这很重要,但我使用的是.NET框架(特别是C#)。

1 个答案:

答案 0 :(得分:1)

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

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

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