我想对我的.NET代码(这是.dlls,.exe和C#代码的组合)做一些相当基本的程序分析。使用Microsoft的Common Compiler Infrastructure,我首先将代码转换为它的IL形式,我想用它构建一个调用图。一旦我有调用图,是否有一些标准工具可以利用,以获得代码复杂性的见解,识别瓶颈,内存占用等?任何指针都会非常感激!
答案 0 :(得分:0)
我认为你想要的几乎是不可能的。根据具体的输入,对象分配的数量可能会有很大差异。
例如,假设程序中有一个方法分配了很多对象,但它只能在某些条件下运行。如果您的分析是准确评估对象分配的数量,则需要知道该方法是否运行。并且唯一的方法是实际评估该条件,这意味着您实际上需要运行该程序。
内存占用可能更加困难:它需要您跟踪完整的对象图并模拟GC。
简而言之:找出程序性能特征的最佳方法是实际运行它。使用静态分析进行相同操作将是困难且不准确的。不要忘记it's impossible to find out whether program completes using static analysis。我认为你想要的更难。