当前位置:编程学习 > C#/ASP.NET >>

在c# linq的Dictionary中 1W 条数据 哪种占用内存最小 如何测试?

在c#  linq的Dictionary中   1W 条数据 哪种占用内存最小?
要如何测试所占内存大小?

Dictionary<int>            123456789
Dictionary<uint>          123456789
Dictionary<string>       "123456789" --------------------编程问答-------------------- 帮顶.个人理解是两个整型都小于字符串. --------------------编程问答-------------------- 第一,你的位数可能已经超过最大(32767),int或者uint好象舒服错。
第二,要看大小,得看每个数据类型的大小,然后再来比较。
第三,真要比较,可以比较SIZE(不指数组长度,比占用空间)试试。 --------------------编程问答-------------------- 补充说明一下: 
存的内容 全部是 9位  0-9的数字

--------------------编程问答-------------------- C# 运行在.netFramework上 无法精确测量某个对象占用的内存大小 --------------------编程问答-------------------- 以前我看有人实现了一种方法
C# 程序可以获取整个应用程序占用的内存大小
//这里获得当前程序的内存大小
//这里new对象进行1w条数据的生成
//这里再次获得当前程序的内存大小
最后将两次获得内存大小进行比较
我试过 不是很准确 --------------------编程问答-------------------- 首先来理论~
int和uint都是使用相同长度的byte,所以他们占用的内存是一致的
C#的字符使用Unicode编码,每个字符要64个byte,而一个int最多也就是64byte(当然取决于平台)
所以string是》=int的(1个字符时相等)

那么实践~~~
之前貌似看过查看C#运行对象内存使用情况的工具~
但忘记了~
--------------------编程问答-------------------- int型和uint型内存相同都是4个字节。 10000个约40k字节。
string型取决于它的长短,C#内部都是unicode编码,1个字符2字节。9个字符要占18个字节。
如果你的列表10000个string平均有9个字符的话 就是约180K了

当然这都只是量级估算,不算其他的开销。 --------------------编程问答-------------------- 不用测试,肯定是int或者uint
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,