【问题标题】:How to Remember Storage Size of .NET Data Types?如何记住 .NET 数据类型的存储大小?
【发布时间】:2011-01-07 14:58:06
【问题描述】:

在 .NET 框架中,了解每种数据类型消耗多少内存很有用,但它太容易忘记了。有什么方法可以记住吗?

例如,如果我知道 int 数据类型占用 4 个字节,那么它很有用。但是这种数据太容易忘记了,特别是当我使用其他软件(例如SQL Server)时,那里的内存消耗可能与.NET框架有很大不同。

有什么方法可以记住它们而不是查看文档?

【问题讨论】:

  • 挑剔点:我知道这只是一个例子,但 int 消耗 4 个字节,而不是 2 个。
  • 1 byte 2 char and short 4 int and float 8 long and double 16 decimal。你应该用它写一首诗。
  • 感谢所有 cmets 关于 int 数据类型的 4 字节内存消耗……我写的只是一个示例,但我对其进行了编辑。
  • .net INTEGER 是依赖于 8 字节中的 64 位和 32 位的平台,它是 32 位和 LONG 的两倍。对于固定数据类型,使用末尾包含数字的数据类型。例如 Int32 Int64

标签: .net types memory-management


【解决方案1】:

我不知道这样的事情是否值得在良心上记住。我建议创建一个备忘单并根据需要参考。随着时间的推移,您会记住它,或者记住您最常用的那些。

【讨论】:

    【解决方案2】:

    当您必须使用低级结构(例如,如果您必须与 C 或汇编程序交换数据,或来自特定硬件接口的数据),或者当您必须处理大量数据并且需要估计内存消耗。但是,在实践中,您只需要处理一小部分(不到十几个),那么记住它们有什么难的呢?

    【讨论】:

      【解决方案3】:

      我不知道您为什么觉得记住这些数字很有用。你真的不需要费心。这不像“过去”,我们必须将数据结构的大小相加以确保它们都适合 32 KB。

      很高兴我们已经过了那个阶段。

      【讨论】:

      • 我接受过几次采访,有人问过这个问题,但那是在托管代码之前
      • -1。这些信息有用的原因还有很多很多。编写 XNA 游戏?在处理数百万条记录时设计缓存高效的数据结构?设计二进制协议或压缩文件格式?这种想法正在边缘化我们的专业。
      • @Robert:抱歉,你这种想法是在浪费人们的时间。无论我们中的少数人需要知道这些信息,都可以找到。我们99%的人不需要知道或关心。时代变了。我们不再需要询问受访者是否知道覆盖是如何工作的。
      • @John:在最近的一个 SO 问题中,我发现任何小于机器 WORD 大小的数据类型都是原子读写的,而如果您正在读取更大的数据类型(即长或在 x86 上加倍),可以读取一个值的一半和另一个值的一半。但当然,多线程是 so 2009.
      • @Robert: 取决于机器的大小,WORD 很 20 世纪。
      【解决方案4】:

      对于原始类型,“如果它听起来很大,那就是很大”:-)。 “长”大于“短”。 “double”比“float”大(漂浮的东西会很轻,即相当小)。 “字节”大于“nybble”。但是,这不适用于小数(小数听起来很小,但它实际上是最大的原始类型)

      事实上,double 听起来像是常规大小的两倍,如果您认为 int 是一个很好的基线,那么 double 确实是 int 大小的两倍。

      【讨论】:

        【解决方案5】:

        这就是我记忆 C# 整数数据类型的方式:

        第 1 步:对尺寸进行分组:

        • 8 位(1 个字节)。

        • 16 位(2 个字节)。

        • 32 位(4 字节)。

        • 64 位(8 字节)。

        第 2 步:然后将数据类型与其大小联系起来:

        • 8 位(1 字节)- 字节,sbyte。
        • 16 位(2 个字节)-short、ushort。
        • 32 位(4 字节)- int、uint。
        • 64 位(8 字节)- long,ulong。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-02-12
          • 1970-01-01
          • 2019-07-19
          • 2018-11-04
          • 2022-12-01
          • 1970-01-01
          • 2014-09-12
          • 2010-10-25
          相关资源
          最近更新 更多