Effective C#: 2.以嵌套数组取代 多维数组[9]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 qqchen79 的 blog

 在了解了.net中数组的实际实现之后,再回到我们关于性能的讨论上来:众所周知,函数调用本身是比较耗时的,因为它包含了参数的压栈出栈,以及程序控制流的转移。因此,诸如c++这样的语言需要提供函数内联(inline)的方式以提高函数调用的性能(关于.net中对于函数内联的支持可以参考条款x)。而直接使用msil指令增加了在即时编译(jit compile)过程中进一步优化的机会。

看来这一次我们险些被自己的直觉所欺骗了,在.net中应该是嵌套数组提供了更加优越的性能。但有些看过条款x的读者可能还心存疑问:你怎么知道像getset这样的函数在jit编译过程中不会采用内联形式编译呢?

很难证明一个函数确实以内联形式嵌入了调用的代码,尤其是在jit环境下。但有一些简单的办法可以证明jit编译器根本不会尝试将一些函数进行内联编译——比如采用类型反射(refelection)

  int[,] mda = new int[3,3]; //定义mdarray

本文关键:.NET, C#, Jagged Array, Array of Array, Multi-Dimensional Array
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top