2009-06-10 61 views
3

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

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

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

干杯,埃德

做...的元素任意数量的初始化树,衡量的过程中消耗的内存大小,增加1000个新的元素,再次测量内存大小
+0

+1我有同样的问题:HTTP:// stackoverflow.com/questions/751710/how-to-find-out-size-of-asp-net-session-when-there-are-non-serializable-objects – 2009-06-10 11:02:38

+1

考虑使用内存分析器;它的目的是帮助你分析你对内存的使用。 http://msdn.microsoft.com/en-us/library/ms979205.aspx – 2009-06-10 15:03:43

回答

3

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

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

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

0

的一种方式,减并划分。

+0

我认为这对我的老板有点太不准确,尽管这是一个可行的选择 – 2009-06-10 11:14:48

0

您可以使用单个字典创建一个小应用程序,然后使用WinDbg或ClrProfiler在几种情况下分析它。 (?使用反射raversing内部字段分开)

我不认为有一种方法来获取对象的总规模在运行时