2

我需要找出简单的控制台 C# 程序消耗的时间和内存。

.Net 框架有秒表实用程序来完成第一个任务,

        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");

我们在框架中是否有一些像这样简单的东西来查找简单控制台程序消耗的内存,而不使用高级诊断技术。

编辑:附加内存使用代码,如下所示,由 Habib 回答。

4

3 回答 3

3

您可以获取当前进程,然后使用属性WorkingSet64可以获取以字节为单位的大小。

Process.WorkingSet64 属性 - MSDN

获取为关联进程分配的物理内存量。

此属性可用于监视具有 32 位处理器或 64 位处理器的计算机上的内存使用情况。该属性值相当于进程的工作集性能计数器。

Process process = System.Diagnostics.Process.GetCurrentProcess();
long memoryUsedInBytes = process.WorkingSet64;
于 2012-09-13T08:51:07.563 回答
2

.NET 进程公开了一组相当丰富的性能计数器。您可以使用 Windows 的性能监视器将计数器添加到图形中,可以是通用内存计数器(分配的字节等)或 .NET 特定的计数器,例如每次 GC 生成中的字节等:

在此处输入图像描述

于 2012-09-13T08:54:45.630 回答
1

似乎垃圾收集器可以帮助您

http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/8bfa495b-bed2-40fd-adbd-cb998b74af32

GC.GetTotalMemory()
于 2012-09-13T08:52:36.887 回答