代码之家  ›  专栏  ›  技术社区  ›  Razor

使用Int32或您需要的

  •  3
  • Razor  · 技术社区  · 15 年前

    您是否应该在知道该值不会高于32767的地方使用Int32?

    Hoever,我想把记忆记下来,到处使用强制转换来执行简单的算术,这让我很恼火。

    short a = 1;
    
    short result = a + 1; // Error
    
    short result = (short)(a + 1); // works but looks ugly when does lots of times
    

    什么对整个应用程序性能更好?

    4 回复  |  直到 15 年前
        1
  •  4
  •   Tim Lloyd    15 年前

    如果您正在创建大型数组,那么它可以节省大量的内存来使用更窄的类型(更少的字节),因为数组的大小将是“type width”*“number of elements”+“overhead”。

    但是,我很确定在默认情况下,在类和结构中,它们将沿着整个单词边界打包,例如32位=4字节。一个短字符仍将被压缩到一个4字节的空间中。

    但是,可以使用结构布局手动配置structs\classes中的打包:

    http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.structlayoutattribute(VS.71).aspx

    与任何与绩效相关的问题一样:“不要思考-衡量”。

    从API的角度来看,必须不断地从short转换为ints等等,这是非常烦人的,因为您会发现大多数API都会使用ints。

        2
  •  8
  •   n535    15 年前

    据我所知,尽可能使用int是一个很好的实践。在许多体系结构中,int的大小等于一个字的大小,所以我认为在某些算术运算中使用short时,性能可能会略有下降。

        3
  •  1
  •   Hans Olsson    15 年前

    我使用小于Int32的整型数据类型的三个原因:

    1. 具有严重内存限制的系统。
    2. 大型阵列或类似。
    3. 我认为这将使代码的目的更容易阅读和理解。

    我主要做普通的Windows应用程序,所以那些对我来说很重要的应用程序的唯一原因就是第三个。

        4
  •  0
  •   Donnie    15 年前

    除非你创建了十万个成员,否则这里节省的空间和任何现代机器上的空间都没有关系。我认为过早优化的准则适用于这里。它可能会让你感觉更好,但你没有从中得到任何特别可衡量的东西。imo-只有在你实际使用大量内存的情况下才能优化内存使用。