Matt Watson / Founder & CEO / Stackify
Our fridge at home is always full. This is generally a good thing. The downside is, it’s hard to find stuff in a fridge that’s been packed to survive an apocalypse. When I can’t find something, there’s a chance someone finished it off. However, certain items are simply MIA; some sort of Bermuda Triangle phenomenon. In fact, on a recent snack-finding mission I finally found the leftover carbonara I’d been hunting for weeks. Unfortunately, it now looked more like an aged wookie than a meal. Isn’t coding just that way? No one wants to deal with bugs, but if you can find them early on, you can deal with them before things get out of hand. The longer it takes to find them, the hairier and gnarlier things can get. The sad fact is, finding app issues is often harder than finding the grape jelly or the last deviled egg. While there is no hope for my fridge (aka the “Upside Down”), there are some great tools available for finding nasty code issues before they sprout hair or spawn putrescent Gremlins or something.
Hooray for Profilers!
I love code profilers. I’ve dedicated the last several years of my career to code profiling technology. In my experience, there are three types of profilers:
A high level profiler tracks performance key methods in your code. These profilers typically handle transaction timing, such as tracking how long a web request takes, while also giving you visibility to errors and logs. This is generally what you want on a server to track the performance of your app when you have thousands of users logged in. Because they are very high level, they are very low overhead. These are generally known as APM products. Specific products include: • Retrace (Stackify) • New Relic • Application Insights (MSFT)
Low level profiling usually tracks performance of every single method in your code and, potentially, every single line of code within each method. It can be very slow with a lot of overhead. These types of profilers are also tracking memory allocations and garbage collection to help with memory leaks. They’re very good at finding that hot path, figuring out every single method that’s being called, and what’s using the most CPU. Specific products include: • Visual Studio Profiler • ANTS (RedGate) • dotTrace (JetBrains)
A hybrid allows you to get a deeper level of detail, but runs on your desktop so you can use it every day. These can track every single transaction that happens, including the performance of key methods, dependency calls, errors and logs. As with server-based APM tools, hybrid profilers provide a relatively high level overview with low overhead, but you can run them on your dev box to find and fix issues before you deploy. Specific products include: • Prefix (Stackify) • Glimpse • MiniProfiler
Naturally, I’m partial to Stackify’s Retrace and Prefix tools. They’ve been a labor of love for the past four years.
Retrace (QA/Test & Production Tiers) Retrace (formerly APM) provides server-based performance profiling for .NET & Java applications. Retrace helps dev managers, architects, and team members understand the performance of all apps and servers to quickly find and fix application problems. With Retrace (starting at $10/mo/server) you can view every detail of every transaction, including web service calls, application logs and errors, SQL queries, and dependencies. Retrace is designed to give developer teams a leg up on apps once they’ve been deployed. View performance of all apps, monitor performance of key transactions, track server and application metrics, leverage detailed transaction traces, identify all application errors, and search across all application logs in one powerful tool.
Prefix provides code profiling for .NET & Java applications on developer’s desktops. Prefix is currently being used by thousands of developers in well over a hundred countries. This lightweight profiler helps you debug and prefix application problems before they get to production. It also gives you visibility to every single web request, SQL query, and web service call, as well as caching, queuing and lots more. New features recently added to Prefix take it to the next level for teams and power users with the ability to profile methods of your own code as well as nonweb & self-hosted apps. You also get end-to-end transaction profiling, longer retention of trace data, the ability to save and share traces, and more.
- How to Create SQL Percentile Aggregates and Rollups With Postgresql and t-digest - August 10, 2020
- What Is NullReferenceException? Object reference not set to an instance of an object - March 11, 2020
- C# Exception Handling Best Practices - March 4, 2020
- IIS Error Logs and Other Ways to Find ASP.Net Failed Requests - November 6, 2019
- List of .Net Profilers: 3 Different Types and Why You Need All of Them - October 30, 2019