Author Archive

Dot.net profiler – New Features

I was on the road the last few days counseling our clients on how performance issues can be detected in .NET applications. Upon perusing my last entry once more, I realized that my account was not complete, since I haven’t yet informed you about the new features SpeedTrace 3.3 is going to bring to the market soon. Therefore, I’d like to just provide you with a short outline of some of the coolest features this tool has.

SpeedTrace 3.3 features:

  • Tracing of multiple processes:
    You can run several instances of SpeedTrace in parallel, so you can profile/trace different processes simultaneously in order to help you to focus on certain segments of your application at the same time.
  • Call history scoping:
    SpeedTrace enables you to open partial traces just to see the callees of a given function by focusing exclusively on the calls made within a given segment.
  • Generating trace output from a terminated process:
    An application that terminates unexpectedly may cause a real headache and waste a lot of time if you cannot analyze its cause properly. Due to SpeedTrace’s robust architecture, it yields reliable results thorough to the last drop even when your application crashes.
  • Hotspot filter:
    Whenever you activate it, SpeedTrace will only display the nodes with own times higher than the specified threshold.
  • Comparing profile results:
    It is important to know whether changes made within your code have a positive upshot or predominantly negative side effects. You can compare profile results with counterpoint method timings and allocation issues.
  • Triggers: Specify the method that will start or stop the profiling process in order to analyze specific behavior within specified boundaries.
  • Black box filter:
    3rd party components that cannot be improved always flood the analysis with irrelevant information. SpeedTrace, however, can encapsulate these components by just providing transitions for the ones you need.
  • Data trace:
    SpeedTrace helps you to locate bugs (e.g. programming errors, deadlocks, missing or wrong version of DLL) easily, allowing you to examine the data flow channeled through the various functions.
  • Code location in Microsoft Visual Studio:
    Whenever you find an issue, a quick tune of the code is required. You can always click on the Source view in SpeedTrace to locate your code in Visual Studio.

Evolution occurs, SpeedTrace evolves

After several months of intense work, the development team of SpeedTrace is introducing a new version of SpeedTrace dot.NET Profiler and Tracer. Although it is not a release version, it is robust enough to prove its new capabilities. We have called it

SpeedTrace dot.NET Profiler and Tracer 3.3 Preview Beta

This version is running until the end of June, so start downloading and check out its new features and capabilities today!

If you have recently downloaded the other version of our .net profiler (3.2), you will be receiving an email with the direct link to our new version in no time. However, if you do not want to wait for this email, please click here and get SpeedTrace dot.NET Profiler and Tracer 3.3 Preview Beta now!

In order to have a better release, we would appreciate your feedback on suggested improvements. Please send us your comments.

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!

Level of Filters

Level of Filters

SpeedTrace wants you!

As part of our strategy improvements we are currently looking for an independent sales representative for our SpeedTrace dot.net Profiler and Tracer in the USA.

Sales Representative Wanted!

Sales Representative Wanted!

Our sales representative for dot.NET applications will perform the following tasks:

  • Contact (potential) clients/customers and work out the software requirements of their businesses
  • Create customer interest in our company’s IT products
  • Keep customers informed on new product developments and IT innovation opportunities
  • Hold presentations at IT conventions and expositions (e.g. lectures at conferences or .NET user group meetings)
  • Provide after-sales support
  • Participate in marketing (e.g. writing press releases, articles in US magazines, etc.) and client education activities
  • Talk to IT engineers (analysts, designers, programmers)
  • Perform continuous updates of own knowledge of .NET products
  • Monthly marketing report of activities

Personal Requirements:

  • Personable and assertive
  • Good communication and presentation skills
  • Perseverance
  • Ability to understand clients’ needs quickly
  • Willingness to regularly update product knowledge
  • Ability to master full scope product functionality and application opportunities
  • Good customer service skills
  • Thorough knowledge of .NET platform

Related Jobs:

  • .NET Consultant
  • Sales Representative

If you are interested and are able to fulfill many of the above requirements, please let us know. Do not hesitate to ask questions. We look forward to your response.

Email to: edgar(dot)sanchez(at)ipcas(dot)de

UNC Paths

A few days ago we had an inquiry in regard to the license server used for the floating license model. Our customer configured the license server, however, he did not bear in mind the note: Use UNC path. Therefore, I have decided to make a small entry here in order to leave a reference for future inquiries.

UNC path is the Universal/Uniform Naming Convention that describes the location of a volume, directory, or file. The format for a UNC path is \\server\volume\directory\file-name and is not case-sensitive. If the configuration of the license server is performed either directly onto the server or from another computer, this UNC path should remain identical throughout the network, since this information is encrypted within the license file.

For example, if a user installing SpeedTrace within a network (illustrated below) configures and activates the license server directly onto the server with a specific UNC path (e.g., \\192.145.342.5\SpeedTraceServer\License.lic), other computers attempting to connect to this license server need to use exactly the same UNC path, otherwise the license server interprets this request as either system tampering or “Installation code does not match”.

The same principle is applied when companies have teams abroad.

Server License Configuration

Server License Configuration

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!

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.

SpeedTrace dot.net profiler in OOP 2008

OOP 2008

OOP 2008

The way to dot.net performance

The way to dot.net performance

This time SpeedTrace showed how it can help companies to improve their businesses.

Every year, the trade show “OOP-Software meets Business” provides information, displays solutions, and exhibits new techniques for modern companies intent on introducing best practices to their business processes.

Thanks to all attendees!

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.

Application running in the Smartphone emulator

Application running in the Smartphone emulator

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.

New Generic Project

New Generic Project

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.

Recording

Recording

SmartPhone application

SmartPhone application

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.

Snapshot

Snapshot

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.

Trace Output Generated

Trace Output Generated

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

Summary View

Summary View

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.

The dot.net Profiler with Data Trace feature

As a software performance company and the owner of a dot.net profiler, we receive a lot of enquiries to provide data-related consultancy. I’ll let you in on a secret: Before we visit our clients on site, we first invite people to use SpeedTrace. As a result we are able to develop long-standing business relationships.

Reading this article, perhaps you might think … what’s he talking about? For this reason I would like to show you, with a simple example, how SpeedTrace dot.net profiler uses its unique data tracing capabilities to get down to the root of a problem.

I have a very nice dot.net application from Microsoft called MS Expression Design; it will help me to illustrate the SpeedTrace dot.net profiler trace capabilities. Just a few days ago I installed a program which, as if by some spell, knocked out the MS application. Don’t ask me how, but it tampered it, and yesterday when I tried to use Expression Design, I received the error message below:

The dot.net application error

The dot.net application error

What this message essentially says is: Oops! Error, sorry, bye! — Not much description, is it ??

You might think: In order to solve the problem he could have installed the application again. Yes, that may be a fair solution, but don’t forget, this is just a sample, and in the real world things are more involved, and there is also a lot more at stake. Anyway, I wanted to see what actually happened to my application, so I used our dot.net profiler to find the answers.

First I created a new Generic Project (Ctrl + G) keeping the default settings and selecting the External Program.

The dot.net profiler

The dot.net profiler


Then in order to get more information, I needed to activate Data Trace.

dot.net Data Trace

dot.net Data Trace

Finally, clicking the Activate Project button, I started to record the loading of Expression Design.

Activate dot.net project

Activate dot.net project

After receiving the same error message as the one interpreted above (Oops! Error, sorry, bye!), I took a snapshot by pressing the Stop Recording button, and SpeedTrace dot.net profiler created my trace output.

dot.net Trace Output

dot.net Trace Output

Now, I was able to run a search for the cause of this faulty behavior. I opened the trace output in Trace and Profile Data mode to search for a string description.

dot.net profiling and tracing

dot.net profiling and tracing

The Trace Analyzer appeared, and I clicked the Trace tab immediately.

dot.net trace tab

dot.net trace tab

By selecting the Find All Exceptions option, I could quickly see the string error.

find exceptions option

find exceptions option

dot.net profiler result

dot.net profiler result

Therefore, I was able to conclude that the Microsoft.Expression.Design.UserInterface.dll was affected. In this case, all I had to do was: just copy the Dll again, so I saved myself the time I would have needed to wait for the installation process and then repair it. However, in a complex multi-thread system, solutions are usually not that simple — all the more reason to use a powerful tool like SpeedTrace dot.net profiler to find the root cause of any performance problem or faulty behavior. And I don’t think I’m exaggerating in telling you that this tool happens to be the best and fastest software profiling and tracing tool on the market. See for yourself! Download our free SpeedTrace trial version!