字典大小[重复]

问题描述 投票:4回答:3

这个问题在这里已有答案:

我目前正在用C#设计一个网站,它使用一些非常复杂的代码来生成一个搜索列表,我目前正在将其设计为树状结构。

我使用树的主要原因是这个网站流量大,搜索过滤器非常复杂,这意味着可扩展性非常重要,但我担心树的内存需求可能超过有效的处理要求每次都只是重新计算值。

有谁知道在C#中测量字典大小的可靠方法? Marshal.SizeOf()方法不允许这样做,因为代码不是非托管的。

干杯,艾德

c# memory-management tree
3个回答
3
投票

最好的办法是在不同型号的网站上运行负载并检查the relevant performance counters

作为简化,您可以只提取创建和存储数据结构的代码,并将其嵌入到控制台应用程序中。运行模拟负载并检查那里的perf计数器。您可以改变一些事物并衡量对内存消耗和垃圾收集的影响。这样做会隔离您想要测量的效果。

如果你在想,“哎呀,这听起来像是很多工作”,那么你最好只是购买更多的内存。


0
投票

一种方法:用任意数量的元素初始化树,测量进程消耗的内存大小,添加1000个新元素,再次测量内存大小,减去和除。


0
投票

您可以使用单个词典创建一个小应用程序,然后使用WinDbg或ClrProfiler在几个场景中对其进行分析。

我认为有一种方法可以在运行时获取对象的总大小(除了使用反射遍历内部字段?)

© www.soinside.com 2019 - 2024. All rights reserved.