struct vs class

时间:2011-03-30 14:13:42

标签: .net performance

这适用于.NET。 我正在寻找一个空间映射应用程序。内存中将同时存在多个多边形(大约30-50个多边形)。每个polgon都有一系列LatLong点。每个多边形的集合范围可以从10到200。但是,有很多计算将使用这些点来完成,这就是为什么(为了性能)我想让LatLong成为一个结构。但是我厌倦了大量的LatLong会在内存中。对此的任何见解将不胜感激。 回顾一下:我想知道我是否将LatLong作为一个结构,因为我想要计算性能,或者一个类,因为在一个内存中的latLongs的数量。

5 个答案:

答案 0 :(得分:10)

答案取决于您的资源优先级,类/结构中的内容以及您如何使用它。我建议你弄清楚你的内存/性能资源是什么样的,然后对这两个实现进行大量测试,看看它们如何适应这些资源参数。如果可能,尝试测试您希望执行的实际操作。

MSDN also offers some good guidance on when and when not to use structs.来自文章:

  

除非类型具有以下所有内容,否则不要定义结构   特性

     
      
  • 它逻辑上表示单个值,类似于原始类型   (整数,双精度等)。
  •   
  • 实例大小小于16个字节。
  •   
  • 这是不可改变的。
  •   
  • 不必频繁装箱。
  •   

答案 1 :(得分:1)

您是否应该做其中一个完全取决于您的应用程序。我会尝试两种方式,看看哪一种更快。这就是我遇到这个问题时的所作所为。

答案 2 :(得分:1)

答案 3 :(得分:1)

一般情况下,如果你要拥有一大堆简单对象,其中包含的数据一旦实例化就不会改变(你的latLongs听起来就像它们基本上是数据容器)那么我个人会使用一个不可变的结构

答案 4 :(得分:0)

使用代表性计算进行两个测试实现,一个带结构,一个带类,并测量,我重复测量(!!!)性能。根据我的经验,任何对预期表现的偏见都很可能在这种情况下完全出错。