What features should a C#/.NET profiler have?

前端 未结 14 1687
暗喜
暗喜 2021-01-30 11:18

This could be a borderline advertisement, not to mention subjective, but the question is an honest one. For the last two months, I\'ve been developing a new open source profiler

相关标签:
14条回答
  • 2021-01-30 11:27

    My prefered profiler was "DevPartner Performance Analysis Community Edition" (http://researchlibrary.theserverside.net/detail/RES/1165507815_474.html?psrc=MPR), unfortunately it's no longer available.

    What made it stand out against the competition was the graphical analysis that showed a box for the current selected method and outgoing connectors to called methods showing the percentage of time spend in each. Also connectors to incomming calls. Of course thos caling and called methods had the same and you could expand them as needed This way, you could navigate freely along your call stack, see the stack as deep as you want, and tackle the hot path in your fragment.

    The second demand would be "ease of use", i.e. it should run with all relevant application types, windows exe, web app, windows service, WCF service, (Silverlight?), ... . And not only with tiny sample applications, but with enterprise sized not-so-trivial applications.

    0 讨论(0)
  • 2021-01-30 11:28

    I'd like at least some compatibility with ASP.NET, though I understand it's actually pretty hard to get that to work.

    Line-by-line is so nice in Shark that I'd also like to have it in .NET.

    A choice of visualizers is a good thing - I'd like to see a bunch of different call trees, statistical graphs and maybe even a heat map of which methods are called most frequently.

    0 讨论(0)
  • 2021-01-30 11:29

    There is EQATEC Profiler that's a free .Net profiler that I have been meaning to use.

    One thing I would like to see is Mono compatibility. I have started dabbling in Mono, and it would be great to have a .Net and Mono profiler!

    0 讨论(0)
  • 2021-01-30 11:33

    Download the Team Suite version of Visual Studio 2010 Beta 1 (free for 6 months or so?), and profile a C# application.

    Trust me. :)

    Edit: Line-by-line mode helped me isolate an operator that was causing a performance problem. I could have found it without per-line highlighting, but when you can scroll around and see the hot lines using it you can fix it soooo easily.

    Oh, and if you want feedback/help, contact me separately.

    Summary View: select any section of the CPU chart to filter.

    (source: 280z28.org)

    I love the line-by-line in the margin:

    (source: 280z28.org)

    0 讨论(0)
  • 2021-01-30 11:33

    One of the things I mis in almost all profiles is a managed API to perform automated profiling and automated tests.

    I can imagine that you think, WTF... why would one like to automate profiling?

    The answer is that some of our customers have requirements regarding speed, mem usage, etc. So for every new release we like to run a test on the stuff mentioned before shipping it.

    0 讨论(0)
  • 2021-01-30 11:34

    What I would like on a profiler:

    • Should work on 32 and 64 bits
    • Should have componentes for all tiers (client, application server, database) and some way to correlate between them. For instance, it would be nice to see how changes made to any of the tiers impact other tiers. That could help deciding on which tier to implement specific features.
    • Command line interface for using with automated scenarios (build server, stress testing, etc)
    • Should have a lightweight sampling mode and a more precise instrumented mode. The second one should impact execution measurements as less as possible.
    • A GUI for ease of use and that should generate the necessary config files for using em comand line mode
    • Generate results in a starndard format (if such thing exists) so I can consume the results with other tools
    • Should also generate or export results to Visual Studio's format (*.vsp)
    • Compare between two or more result files, to see the evolution or regression of the code base.
    • Collect and correlate the target application data with PerfMon data of other processes running on each target machine to identify concurrent resource usage (Memory, Processor, Disk and Network I/O)
    • Determine thresholds for which some alert mechanism should be invoked. Example of such would be to e-mail someone if a specific scenario takes more time than specified.
    • Hability to attach and detach from a running process to collect sampling data without interfering with the target application. Must have for using on production sites.
    0 讨论(0)
提交回复
热议问题