Мне нужно выяснить время и память, потребляемую простой консольной программой на C #.
.Net Framework имеет утилиту Stopwatch для выполнения первой задачи,
Stopwatch sw = new Stopwatch();
sw.Start();
Process process = Process.GetCurrentProcess();
long memoryUsedInBytes = process.WorkingSet64;
//do something
sw.Stop();
Console.WriteLine(sw.Elapsed.Milliseconds + "ms elapsed.\n" + memoryUsedInBytes/1000 + " KB consumed");
У нас есть что-то простое в рамках этой структуры, чтобы найти память, потребляемую простой консольной программой, без использования передовых методов диагностики.
РЕДАКТИРОВАТЬ: добавление кода, используемого памятью, как ответил ниже, Хабиб.
Вы можете получить текущий процесс а затем используя свойство WorkingSet64 Вы можете получить размер в байтах.
Свойство Process.WorkingSet64 — MSDN
Получает объем физической памяти, выделенной для связанного
процесс.
также
Это свойство можно использовать для мониторинга использования памяти на компьютерах с
32-битные процессоры или 64-битные процессоры. Значение свойства
эквивалентно счетчику производительности рабочего набора для процесса.
Process process = System.Diagnostics.Process.GetCurrentProcess();
long memoryUsedInBytes = process.WorkingSet64;
.NET-процессы предоставляют довольно богатый набор счетчиков производительности. Вы можете использовать системный монитор Windows, чтобы добавить счетчики в график, либо общие счетчики памяти (выделенные байты и т. Д.), Либо специфичные для .NET счетчики, например байты в каждом поколении GC и т. П.
Похоже, сборщик мусора может помочь вам
http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/8bfa495b-bed2-40fd-adbd-cb998b74af32
GC.GetTotalMemory()