Детали процесса (процессорное время, выделенная память) для метода в программе - PullRequest
3 голосов
/ 23 октября 2011

Я хочу вычислить процессорное время и память , выделенную для конкретного метода во всей программе.Я могу получить процессорное время и память для всей программы.Как получить подробности для определенного метода.

Также, как получить доступ к диску, который программа сделала во вторичном хранилище при получении значений / информации с диска.

Я пытался сделатьпоток и заставить метод работать созданным потоком, но он не работал.Это дает информацию о полном процессе.Я ищу конкретный метод.

Добавление более подробной информации, надеюсь, это поможет в понимании вопроса.

ок.я пишу код 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

1 Ответ

0 голосов
/ 01 ноября 2011

Используйте GC.GetTotalMemory (false) в checkPoint_2_start checkPoint_2_end (или любую другую функцию для метрики, которая вам нужна).Дополнительный объем памяти, используемый между этими двумя контрольными точками, представляет собой значение, возвращаемое в checkPoint_2_end, за вычетом значения, возвращаемого в checkPoint_2_start.

Если вы хотите использовать только память для одного потока, я думаю, вы не сможете этого сделать.Вам придется каким-то образом отслеживать все ваши выделения.

Используйте Process.TotalProcessorTime для времени ЦП.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...