0 0
WP Ad Inserter plugin
Read Time:1 Minute, 37 Second

Do you need to tune up the performance of your code? You can create some StopWatch objects and store the execution times or rely on external libraries like MiniProfiler.

Note: of course, we’re just talking about time duration, and not about memory usage!

How to profile code using Stopwatch

A Stopwatch object acts as a (guess what?) stopwatch.

You can manually make it start and stop, and keep track of the elapsed time:

Stopwatch sw = Stopwatch.StartNew();
DoSomeOperations(100);
var with100 = sw.ElapsedMilliseconds; sw.Restart();
DoSomeOperations(2000);
var with2000 = sw.ElapsedMilliseconds; sw.Stop(); Console.WriteLine($"With 100: {with100}ms");
Console.WriteLine($"With 2000: {with2000}ms");

It’s useful, but you have to do it manually. There’s a better choice.

How to profile code using MiniProfiler

A good alternative is MiniProfiler: you can create a MiniProfiler object that holds all the info related to the current code execution. You then can add some Steps, which can have a name, and even nest them.

Finally, you can print the result using RenderPlainText.

MiniProfiler profiler = MiniProfiler.StartNew(); using (profiler.Step("With 100"))
{ DoSomeOperations(100);
} using (profiler.Step("With 2000"))
{ DoSomeOperations(2000);
} Console.WriteLine(profiler.RenderPlainText());

You won’t anymore stop and start any StopWatch instance.

You can even use inline steps, to profile method execution and store its return value:

var value = profiler.Inline(() => MethodThatReturnsSomething(12), "Get something");

Here I decided to print the result on the Console. You can even create HTML reports, which are quite useful when profiling websites. You can read more here, where I experimented with MiniProfiler in a .NET API project.

Here’s an example of what you can get:

Further readings

We’ve actually already talked about MiniProfiler in an in-depth article you can find here:

🔗 Profiling .NET code with MiniProfiler | Code4IT

Which, oddly, is almost more detailed than the official documentation, that you can still find here:

🔗 MiniProfiler for .NET | MiniProfiler

Happy coding!

🐧

Source: https://www.code4it.dev/csharptips/profile-code-with-miniprofiler

Building Interactive Figma Widgets Previous post Building Interactive Figma Widgets
Managing WordPress Dev Environments With WP-CLI and Robo Next post Managing WordPress Dev Environments With WP-CLI and Robo

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.