Tuesday, August 26. 2008
New CTP Version 3.3.18 available.
Download
SpeedTrace 3.3.18
Community Test Preview
32-bit version.
Friday, April 11. 2008
Full performance from dot.net Trace Profiling
In many msdn blogs I have noticed that people are trying to understand why certain dll's or function/methods show up in their performance analyses contrary to their wish after profiling their application with VS.
Usually, one can use a dot.net sampling profiler to drill down to the problem of an application. Yet having done that, what if the sampling data does not provide the relevant data and sufficient information? Well, for every question there is, of course, always an answer: a trace profiler can offer more and important detailed information, especially if your application works in a multithread environment. On the other hand, every solution also has its drawbacks, and this is no exception. Therefore, when you profile a huge application, you may find that you'll be flooded with information in a huge trace result, and your application's performance is liable to be sensitively impaired by the procedure on top of it.
However, the SpeedTrace dot.net profiler, finally offers you a way out of this dilemma! Thanks to its three-level filtering approach (illustration below), you will be able to avoid (and reduce to a minimum) the unnecessary information that normally holds you back when tracking down the essential performance issue. Besides, by thus streamlining its tracing and profiling capabilities it also prevents the impacts that normally occur to your applications' performance when you subject them to these kinds of procedures.
And this is how it works:
- The recording filter (only available in the Pro version) first collects all method calls and is apt to maximize trace speed, minimize resource usage (memory, time, power, etc.), and minimize the bulk of information
- The pre-processing filter (available in the Basic and Pro versions) then works on the traced calls and further minimizes resource usage and minimizes the information to what is relevant and sufficient
- The post-processing filter (available in the Basic and Pro versions) finally filters the pre-processed calls and minimizes the information to that which is quintessential, leaving you with a perfectly profiled and thoroughly useful account of your problem.
The bottom line of the story is:
The SpeedTrace filterering system is simply a tool you cannot do without when bug trapping your application!

Friday, February 22. 2008
Profiling medical software
This time I took part in the 13th symposium on Information Processing and Supply Networks in Hospitals (KIS, Dortmund, Germany). It was really interesting to gain insight into how technology nowadays is affecting the operations of hospitals, clinics, and their personnel management. However from my point of view, they focused too much on the hardware rather than sufficiently covering the software that drives it.
Within the healthcare system speed plays a crucial role and can often mean a matter of life and death. Here again, performance enters the picture as an important factor when developing the respective software tools.
I would like to kindly urge all readers of this blog who are working or taking part in healthcare projects to also bear in mind the performance of their dot.net developments, since noone would like to be caught in the emergency operating room waiting for protracted periods until the information pops up idly on the doctor's screen.
Long waiting periods for vitally important medical information can be avoided by testing and improving your medical software with the SpeedTrace dot.net profiler — the best and fastest on the market!
Friday, February 15. 2008
Profiling the dot.net profiler sampler
Looking around for information on profile sampling methods, I realized there was much less out there than to be expected from such a buzz topic. Therefore, I decided to make a small contribution to this subject.
First of all, I have compiled an outline to give you an idea of what a dot.net profiler sampler essentially does. The general idea of a sampling profiler is to check the target program's program counter regularly at certain intervals by using operating system interrupts. Being low in impact, this sampling approach has the advantage that it allows the program analyzed to run nearly at full speed. Yet random profiling also has its drawbacks, one of which is that it is prone to skip over information necessary for an in-depth analysis where accuracy becomes mandatory.
As you can see, dot.net sampling profilers have their pros and cons. In any case, it is useful to apply dot.net sampling whenever you need to analyze with extremely low impact. This allows you to identify the areas of an application that are causing performance problems. Later on, once the potential performance problems have been identified, it is usually advisable to switch over to a full-fledged trace analysis.
While writing this summary, I found a neat quote from IBM:
“You might have heard of the 90/10 rule: 90% of the time is spent on executing 10% of the code. Optimizing 90% of the code will have little impact on overall performance. You need to pinpoint and improve performance bottlenecks -- the 10% of the code where 90% of the execution time is spent." IBM 10 Nov 2005
This is absolutely true, since unnecessarily digging and searching in the wrong places is awfully time-consuming and hardly rewarding. However once you have roughly sounded out the problem areas, the time comes when you require full-fledged profilers with tracing capabilities to do the job. That is because ... and here's another quote:
“Developers are notoriously bad at guessing where performance problems lie, profiling can help identify them more accurately by gathering data about an executing application, and providing alternate ‘views’ of it to aid the detection process.” Simon Horrell
Although a full-fledged tracing profiler, SpeedTrace is extremely low-impact, perhaps not quite as low as the usual dot.net profiler sampler, but nevertheless the fastest profiler and tracer on the market with the lowest impact and the best returns.
Friday, January 18. 2008
Dot.net Profiler in the .Net Compact Framework
I have seen different people looking for a dot.net profiler able to analyze their .Net Compact Framework applications. It is easy to understand why people should seek to solve issues within this arena since mobility is the trend nowadays.
In the article, Instrumentation in the .NET Compact Framework written by Scott Holden, he mentions how important it is to provide high-performance solutions since that is the issue you address with your customer.
Moreover, the Developing Well Performing .NET Compact Framework Applications article mentions the importance of analyzing algorithms written by developers as a performance measure:
In some cases, it will also be required to focus on parts of an application that call many functions. Therefore, a developer should know how to determine these durations for later comparisons between designs.
That is why I've decided to show you now how the SpeedTrace dot.net profiler is able to help you to analyze algorithms also written for .Net Compact Framework since you will then be able to see calls made during execution in order to analyze design issues.
The following example uses a dot.net application which establishes a remote desktop connection via vnc. It is analyzed before the application is deployed to the PDA, since SpeedTrace does not yet offer a dot.net compact profiler at the moment.

For our analysis, we will be using the .exe file compiled by Visual Studio (also located in the debug directory).
The first step is to create a new generic project in SpeedTrace and to locate this dot.net application. We keep the default values for a quick start.

Once the application has been selected and the SpeedTrace dot.net profiler is ready to analyze it, we can activate the project and start to record it. The Smartphone application will open, so we can add the server and password information.


The application connects to the designated server. At this point we have enough information for our analysis. Let us take a snapshot without detaching our application; we may need to continue analyzing later.

The SpeedTrace dot.net profiler generates the output file and requests the type of output we want to use. In this example, I have used the 'Profiling Data only' option.

The Trace Analyzer opens and shows the Performance Summary of this dot.net application.

In this case absolute times are not representative since resources within PCs are completely different from the ones in PDAs. However, “relative times” (time contribution) can be compared to solve algorithm-related issues. Moreover, the number of calls plays an important role, too, whenever it is necessary to see whether too much processing was done; the number of calls should be equal for both platforms.
At this point, I have illustrated how the SpeedTrace dot.net profiler can also be useful under Dot.Net Compact Framework. The rest is up to you. All you need to do is apply filters and triggers in order to focus on specific parts of your dot.net applications.


