Optimizing Applications

If you are developing software for Windows NT, you will want to take advantage of the advanced features that will make your application hot, hot, hot. It's important to know that much of the lore that guided the development of Windows-based applications for 16-bit computers is no longer relevant to the new, 32-bit architecture of Windows NT. In Chapter 9 we'll cover these issues in some detail.

If you are merely a victim of these ruthless programmers, Chapter 9 will give you a few weapons to defend yourself. You will be able to determine whether they are using the correct techniques to get the most out of Windows NT. Imagine the looks on their faces when you point out to them that they should be mapping the WIZBANG.DAT file. Send us the videotape!

If you are developing software on Windows NT, you immediately have access (through the Windows NT Software Development Kit) to a strong set of tools for application optimization. You can find out how your application is using the system, and whether it is behaving as you hoped. You can acquire intimate knowledge of such details as how long it takes to make any given system call on your computer and how often your program is making that call. For example, you can use the Windows NT API Profiler to determine which files are most heavily accessed and which events and semaphores are causing the most delays within the application. Chapter 10 will give you some guidelines on using these tools wisely, as well as guidelines for other useful tools that are on the floppy disk accompanying this book.

You will also be able to minimize the memory used by your application. A tool for automatic working set tuning is included in the Windows NT Software Development Kit (SDK). Other tools will help you to understand your virtual memory activity in some detail, so you can find memory and virtual memory leaks. Chapter 11 discusses all of this.

In Chapters 12 and 13 we will provide information to help you write your own performance monitor or to incorporate the monitoring technology into your application so you can produce information about the system's behavior along with statistics about your application's progress. And you will find out how to add counters from your application to the performance monitor so that your users can remotely monitor the progress of your application and correlate that progress with computer resource usage.