Rowland Shaw
Rowland Shaw

Reputation: 38130

Is it possible to profile memory usage of unit tests?

I'm looking at building some unit tests to ascertain if resources are leaking (or not) using the unit testing framework that comes with Visual Studio.

At present, I'm evaluating the latest version of ANTS Profiler, but I can't quite work out if it allows me to force a snapshot from code (so that I can take a snapshot, run a unit test a few hundred times, force a garbage collection, and take another snapshot, and save the results out for later analysis).

Is this possible to do with ANTS/Visual Studio or should I be exploring options with other profilers?

Upvotes: 18

Views: 10610

Answers (4)

I use ANTS profiler, and what I find most convenient is to attach the profiler to the running test process, that may be different depending on what testing framework you are using. For example, I use Resharper and the process image name is called something like:

JetBrains.ReSharper.TaskRunner.CLR...

Upvotes: 1

Lex Li
Lex Li

Reputation: 63133

JetBrains dotTrace/dotMemory and ReSharper have better integration on unit testing and profiling.

http://www.jetbrains.com/profiler/index.html

Not sure if ANTS has such integration, but you can consult Red Gate presales, right?

http://www.red-gate.com/about/all_testimonials.htm

They do expect you to call them for more information.

Upvotes: 2

Fedor Reznik
Fedor Reznik

Reputation: 61

Have you seen dotmemory from JetBrains?

dotMemory Unit is a unit testing framework which allows you to write tests that check your code for all kinds of memory issues.

For example:

When you need to simply evaluate the amount of memory allocated in a test, you can use the AssertTraffic attribute. This flexible attribute allows you to filter traffic data by object type, interface, or namespace.

Upvotes: 6

Ben Emmett
Ben Emmett

Reputation: 450

For future readers, worth mentioning that you can force snapshots from within your code with ANTS Memory Profiler. You need to reference

RedGate.MemoryProfiler.Snapshot.dll

which is included in the ANTS install directory. You can then take a snapshot by calling

RedGate.MemoryProfiler.Snapshot.TakeSnapshot("Optional snapshot name")

Full details here.

Upvotes: 0

Related Questions