Joan Venge
Joan Venge

Reputation: 330882

How can I profile C# methods per second?

I don't know if the title makes sense, but I am trying to time two different methods and see how many times they execute per second, or say per 10 seconds.

For instance:

DividePolygons1(Polygon[] polys)
DividePolygons2(Polygon[] polys)

DividePolygons1 ran:
1642 times per 1 second

DividePolygons2 ran:
1890 times per 1 second

Upvotes: 7

Views: 1936

Answers (3)

Old Programmer
Old Programmer

Reputation: 554

Visual Studio 2010 has a profiler which could determine the exact number of methods calls per time unit.

Upvotes: 1

BeemerGuy
BeemerGuy

Reputation: 8269

What I would do:

  • Start a Stopwatch.
  • In those functions, I increment a simple variable (long, float, or double, depending on how often you think they'll get called) so it's incremented on each call.
  • Call the first function.
  • Stop the Stopwatch and check the TotalSeconds against the variable I've been incrementing.
  • Repeat for the second function.

Upvotes: 2

Ben Voigt
Ben Voigt

Reputation: 283624

The System.Diagnostics.Stopwatch class will help you here, but be careful to use the results somehow so that the optimizer doesn't eliminate the logic you're trying to measure.

Beyond that, just run the code you're profiling several million times in a loop (adjust the iteration count to make it take between 1 and 30 seconds), then divide the number of iterations by the time taken to get the throughput in executions per second.

Upvotes: 10

Related Questions