C# 用于在代码中查找装箱的工具

C# 用于在代码中查找装箱的工具,c#,.net,garbage-collection,boxing,unboxing,C#,.net,Garbage Collection,Boxing,Unboxing,背景:我正在为xbox开发,我正处于验光阶段。我需要减少对象分配。一个开始的地方是找出(联合国)拳击发生的地方 我对IL非常陌生(因为我从来没有看过任何东西!),我希望避免通过disassembler运行DLL,寻找(un)box命令,然后尝试找出它与哪一行代码相关 问题:是否有任何工具可以为我报告此类事件(在(取消)装箱发生的地方) 编辑:将下面的请求转换为自己的请求,因为它与此请求完全不同 将GC堆转储绑定回发生对象创建的代码行的方法有很多、很多、额外的好处 这详细说明了如何创建FxCop(

背景:我正在为xbox开发,我正处于验光阶段。我需要减少对象分配。一个开始的地方是找出(联合国)拳击发生的地方

我对IL非常陌生(因为我从来没有看过任何东西!),我希望避免通过disassembler运行DLL,寻找(un)box命令,然后尝试找出它与哪一行代码相关

问题:是否有任何工具可以为我报告此类事件(在(取消)装箱发生的地方)

编辑:将下面的请求转换为自己的请求,因为它与此请求完全不同


将GC堆转储绑定回发生对象创建的代码行的方法有很多、很多、额外的好处

这详细说明了如何创建FxCop(代码分析)规则,该规则检测装箱和取消装箱,并将违规行为作为警告显示。这篇文章有点老套,但你应该能够根据自己的需要对其进行调整。

有一个叫做的工具正是这样做的


当尝试将装箱/取消装箱检查集成到构建过程中时,它并不是真正有用的。为此,您需要为FxCop制定一些规则。

“将GC堆转储绑定回对象创建所在代码行的方法需要很多、很多、奖励分数!!”然后设置奖励,否则没有奖励分数。@Jason,我会的,但还不能,因为我想这个问题需要一天左右的时间。出于好奇,是什么让您相信对象分配是您的主要瓶颈?CLR中的内存分配通常非常便宜,并且针对频繁分配小型临时对象进行了优化。@Dan,众所周知,在为xbox GC开发代码时可能会降低性能(Compact framework GC不如桌面)。由于GC每1MB(在xbox上)发生一次,所以我们的想法是在游戏过程中最小化对象分配。@MGZero
inti=1;对象o=(对象)i;/*装箱*/i=(int)o//拆箱