C#数组大小分析(附测试过程中想起的debug和release区别)

  C#数组的理论最大长度到底是多少呢?曾经一度问过度娘,谷歌,貌似都没有得出一个比较准确的答案,无外乎是什么Int32的最大值啊什么的,今天终于决定写个软件来自己测试一下,在几台不同的电脑里面实际测试看看到底是多大?

  说干就干,利用二分查找算法分别找出bool数组,int数组,string数组,long数组,float数组等几个常用类型的最大长度,在三台电脑上的结果分别如下:

电脑\数组类型 bool int string long float
电脑1-PC 2147483591 536870897 268435447 268435448 536870897
电脑2-X3650服务器 2147483591 536870897 268435447 268435448 536870897
电脑3-X250笔记本 2147483591 536870897 268435448 268435448

536870897

  电脑1-PC的基本配置:

  电脑2-X3650服务器:

  电脑3-X250笔记本:

  从上面的表格中,可以很清楚的看到,这几个系统环境下各种类型数组的最大长度,有点奇怪的是,string类型数组,三个系统环境有点差别,望高人指点。

 

  PS:编写该测试软件的过程中,发现并体会到了一番debug和release程序的区别了,度娘和谷歌上大多数的说法都是,release更轻量级,做了很多优化,程序运行效率更高,但是真正体现在程序中的是,定义一个数组,比如int[] list = new int[1000],debug中是立即分配了内存空间,而release中,如果不使用是不会分配内存空间的,这就导致我这个测试程序最开始的情况是,debug模式时运行得好好的,而release模式就不正常了,因为我是通过捕获异常来判断系统中该类型数组的最大长度的

posted @ 2017-10-17 11:02  billzhao  阅读(390)  评论(0编辑  收藏  举报