【发布时间】:2011-06-20 20:11:26
【问题描述】:
背景:我正在为 xbox 进行开发,目前处于优化阶段。我需要减少对象分配。一个起点是找出(取消)装箱发生的位置。
我对 IL 很陌生(因为我从来没有看过任何东西!)并且希望避免通过反汇编程序运行 DLL,寻找 (un)box 命令然后尝试找出哪一行代码它涉及到。
问题:是否有任何工具可以为我报告此类事情(发生(取消)装箱)?
编辑:在下面提出请求到它自己的question,因为它与这个完全不同。
将 GC 堆转储与发生对象创建的代码行联系起来的方式有很多很多的奖励积分!!
【问题讨论】:
-
“将 GC 堆转储与发生对象创建的代码行联系起来的方式有很多很多的奖励积分!!”然后设置赏金,否则没有奖励积分。
-
@Jason,我会,但还不能,因为我认为这个问题需要一天左右的时间。
-
出于好奇,是什么让您相信对象分配是您的主要瓶颈? CLR 中的内存分配通常非常便宜,并且针对小型临时对象的频繁分配进行了优化。
-
@Dan,众所周知,为 xbox GC 开发代码时会影响性能(紧凑框架 GC 不如桌面)。由于 GC 每 1MB 发生一次(在 xbox 上),因此我们的想法是在游戏过程中尽量减少对象分配。
-
@MGZero
int i=1;object o = (object)i; /* boxing */ i = (int)o; //unboxing
标签: c# .net garbage-collection boxing unboxing