我想计算在整个程序中为特定方法分配的 CPU时间和内存。我能够获得完整程序的CPU时间和内存。如何获取特定方法的详细信息。
此外,如何在从磁盘获取值/信息的同时,让磁盘访问从二级存储创建的程序。
我尝试创建线程并使方法由创建的线程运行,但它不起作用。它提供了完整过程的信息。我正在寻找一种特定的方法。
添加更多细节希望这有助于理解问题。
确定。我正在写一个C#代码
public class Program
{
public static void Main(string[] args)
{
**checkPoint_1_start**
//
// Some code here
//
**checkPoint_2_start**
calling_Method();
**checkPoint_2_end**
//
// Some code here
//
**checkPoint_1_end**
}
public void calling_Method()
{
//
// Code of this method is very long and contains many variables.
//
}
}
我能够找到checkPoint_1_start用于checkPoint_1_end的内存。我想如何找到仅在checkPoint_2_start checkPoint_2_end之间使用的内存。
我使用以下内容来查找内存使用情况的详细信息,它提供了从checkPoint_1_start到checkPoint_1_end的整个过程。如何在checkPoint_2_start checkPoint_2_end之间使用内存。
私有内存:System.Diagnostics.Process.GetCurrentProcess()。PrivateMemorySize64 / 1024 工作集内存:System.Diagnostics.Process.GetCurrentProcess()。WorkingSet64 / 1024 分配的内存:GC.GetTotalMemory(false)/ 1024
答案 0 :(得分:0)
在checkPoint_2_start checkPoint_2_end(或您需要的指标的任何其他函数)上使用GC.GetTotalMemory(false)。这两个检查点之间使用的额外内存量是checkPoint_2_end返回的值减去checkPoint_2_start返回的值。
如果你只想要单个线程的内存使用量,我认为你不能这样做。您必须以某种方式跟踪所有分配。
使用Process.TotalProcessorTime作为CPU时间。