| Title: | DECWINDOWS 26-JAN-89 to 29-NOV-90 | 
| Notice: | See 1639.0 for VMS V5.3 kit; 2043.0 for 5.4 IFT kit | 
| Moderator: | STAR::VATNE | 
| Created: | Mon Oct 30 1989 | 
| Last Modified: | Mon Dec 31 1990 | 
| Last Successful Update: | Fri Jun 06 1997 | 
| Number of topics: | 3726 | 
| Total number of notes: | 19516 | 
    From time-to-time, I am asked whether my group has a Guide to
    DECWindows Performance which advises programmers on how to write fast
    DECWindows applications.  To my chagrin, the answer is "no".  
    But there are a few Rules Of Thumb which may or may not be obvious.
    
    Please feel free to add more ROTs and/or correct the ones listed
    below...
    
	- nothing is obvious; experiment with different algorithms
	- when you study memory and CPU use, remember that you need to consider 
	  not just the application, but the server also
	- windows, widgets, and GCs are NOT cheap; use them sparingly
	  (counter to the MIT design philosophy)
	- use gadgets instead of widgets if at all possible
	- generally, a complex widget is an expensive widget; 
    	  for example, dialog boxes
	- be aware of operations that require the window manager to get 
    	  involved; for example, creating and mapping a window that can be 
    	  resized or iconified has to go through the window manager
	- toolkit widgets pay a performance price for being general purpose;
	  consider writing your own special-purpose widget if necessary
	- if you write your own widget, use the translation manager sparingly
	- process your incoming events and replies ASAP; don't let them pile up
	  and possibly overflow your transport buffers
	- avoid XFlush and XSync; that just means you have to pay more to 
	  transport less
	- remember that there are going to be other applications executing; 
	  handle Focus properly and avoid Grabs if possible
	- watch for flickers or sparkles on your screen; you many be drawing 
    	  the same thing several times
                      
    
    John B.
| T.R | Title | User | Personal Name | Date | Lines | 
|---|---|---|---|---|---|
| 1465.1 | QUARK::LIONEL | Free advice is worth every cent | Wed Sep 20 1989 10:48 | 10 | |
| I'd also add a admonition to free memory wherever needed. There are just too many places in the toolkit that make it easy to leak memory. The compound string routines are a primary example, but one that some might not think about are the VAX binding argument list building routines (DWT$VMS_SET_ARG, etc.) Unfortunately, the documentation is silent on this - only by stumbling across the description of the routines that do the freeing might you start to have a clue that it is necessary. Steve | |||||
| 1465.2 | A few more... | LEOVAX::TREGGIARI | Wed Sep 20 1989 12:49 | 14 | |
| 
 -  Fonts and large pixmaps are expensive; use them sparingly...
 -  Don't create widgets until you need them.  For example, at start-up
    only create the widgets needed by your "main" window.
 -  Call XtSetValues and XtGetValues sparingly.  For example, create a
    widget with all of its resources set properly, rather than create
    it and then immediately call XtSetValues.  Also, use "convienence"
    routines like DwtToggleButtonGetState instead of XtGetValues, when
    possible.
Leo
 | |||||