Microsoft KB Archive/74937

From BetaArchive Wiki

Authoring Windows Help Files for Performance

Q74937



The information in this article applies to:


  • Microsoft Windows Software Development Kit (SDK) 3.1
  • Microsoft Win32 SDK, versions 3.5, 3.51, and 4.0





SUMMARY

The Windows Help Compiler allows an application developer to create hypertext documentation, richly annotated with color and graphics. This article discusses methods to author help files to achieve maximum performance when the file is used. These comments apply to Windows Help versions 3.06 and later.

This information is subject to change in future versions of the Help Compiler and of the Help application as new technology is incorporated into these products.

There are four major suggestions:


  1. Use OPTCDROM=1 for all files destined for CD-ROM (compact-disk read-only memory), and potentially on files where up to an additional 10K of size is not significant.
  2. Use bitmaps placed with data for small bitmaps that are referenced only once or infrequently in the help file.
  3. Use bitmaps not placed with data for large bitmaps, all bitmaps referenced frequently, or bitmaps referenced by two or more topics that generally will be viewed in succession.
  4. Use segmented hypergraphics to generate graphics with multiple hot spots, rather than several bitmaps positioned next to each other.

Coincidentally, suggestions 2, 3, and 4 are also generally space-saving techniques as well.



MORE INFORMATION

  1. Use OPTCDROM=1 for files destined for CD-ROM.


When OPTCDROM is placed in the [OPTIONS] section of the .HPJ file, the topic information in the help file is aligned on 2K boundaries. This option is aimed at maximizing performance on CD-ROM drives, where reading aligned information can be significantly faster.

Estimates indicate that sequential reads from CD-ROM can be up to twice as fast when aligned. While reads are not always sequential, a high percentage can be, depending on how the help file is authored. Minor improvements have also been noted on magnetic media.

This option can cause up to 10K of additional file space to be used.

  1. Store small bitmaps with data.


Placing bitmaps with data keeps the graphical and textual information in the same location in the help file. This avoids reading from different locations on disk to display a topic. Seeks to different locations are exceptionally time consuming on CD-ROM, and can be time consuming on magnetic media. Bitmaps with data also help maximize the effects of the OPTCDROM option.

Up to 12K of compressed topic text is buffered in memory. Since bitmaps are kept with the topic text, they take advantage of this buffering. Thus, topics under 12K in compressed size generally do not need to be reread when the window is resized or redrawn.

Note that large bitmaps kept with data may cause performance to become worse. Topics may be laid out twice as part of scroll bar removal. Topics over 12K in size will be read, laid out, and then reread as they are laid out a second time before display. Bitmaps are often the cause of exceeding the 12K size. Bitmaps NOT kept with data are buffered elsewhere (see #3 below), and if the remaining textual data is less than 12K, the topic will be read from disk only once.

Bitmaps with data cost space only when the same bitmap is used more than once in the help file. If a bitmap is used frequently, not placing it "with data" may be more appropriate, unless the performance benefit is determined to outweigh the size hit.

  1. Store large and frequently accessed bitmaps separately.


The 50 most recently accessed bitmaps not stored with data are cached in memory. This means that the bitmap may have to be read from disk only once if two successively displayed help topics reference it. Unlike bitmaps stored with data, these cached bitmaps only have to be reread if they are bumped out of the cache by the subsequent display of 50 more bitmaps, or by low memory conditions.

Cached bitmaps not stored with data cost some speed when they are typically displayed by the user only once in a session. Since they are stored in a different portion of the help file from the topic text, an additional seek is required to locate them. This cost, if incurred, is generally negligible on disk, and high on CD-ROM. Note, however, that this cost MAY be less than the cost of reading the topic twice, if the topic is laid out twice as a result of not needing scroll bars, and is larger than 12K.

  1. Use segmented hypergraphics.


Segmented hypergraphics is the term used to describe the ability to take a single bitmap, and define several regions that are hot spots. Hot spots can overlap, and can each perform different actions.

The primary benefit of using segmented hypergraphics is that a single bitmap can be used. Previous techniques utilizing several bitmaps carefully placed in the topic text to generate a single image have the drawback of requiring several bitmap-locating operations at display time, which can translate to several disk seeks and reads. On CD-ROM, especially, this can be quite significant.

The only cost involved in using segmented hypergraphics is that the segmented hypergraphics editor must be used to define the hot spots within the bitmaps.

In summary, there are a few simple authoring techniques that can improve performance of help files. While especially significant for CD-ROM hosted help files, they are of benefit to disk-based help files.

Additional query words: 3.10 3.50 4.00 95 win16sdk

Keywords :
Issue type :
Technology : kbAudDeveloper kbWin3xSearch kbSDKSearch kbWinSDKSearch kbWinSDK310


Last Reviewed: March 6, 1999
© 2001 Microsoft Corporation. All rights reserved. Terms of Use.