What is it?
NProfiler is an application profiler for .NET that is capable of gathering performance metrics about a managed (.NET native) application and allows you to analyse this data in order to identify performance problems in your applications.
Is it still being developed
Yes, as part of my work on debuggers I'm now moving the code onwards again.
How to use
NProfiler is useless without some data to analyse so the first thing you need to do is either load up an existing profiling log using the open option on the file menu or generate a new log by profiling an application. You can do this through the Profile option on the file menu, which brings up a dialog that allows you to select the application to profile. This dialog will remain open until you terminate the
Current features
NProfiler consists of two modules, a C# application and an unmanaged C++ COM object that gathers actual profiling information from a running .NET application.
- Run an application while gathering profiling data and wait for it to exit.
- Metric gathering on function execution times for both normal calls and calls to unmanaged code.
- Display of call tree.
- Display of function list with useful metrics such as number of times called and both average and total call time.
Features in development
- Multiple thread support. Without this you can only profile the most basic applications.
- Support for showing thrown exceptions in the call tree.
- Better analysis functionality.
- Profiling options to control what metrics are returned.
- Improved feedback during long operations.
- Much better performance. The current version is rough development code.
- More robust handling of error conditions.
Contact
You can contact me at jonshute@chimpswithkeyboards if you have any questions or suggestions about the project.
Acknowledgements
Thanks to Matt Pietrek whose MSDN Magazine article was a great help in implementing this code.