March 12th, 2007

What is a SM_SLOWMACHINE?

Jason Doucette asks how slow a machine has to be to be considered a GetSystemMetrics(SM_SLOWMACHINE). The answer: Pretty darned slow by today’s standards. When the metric was introduced in Windows 95, the definition of a “slow machine” was as follows (roughly):

  • If the CPU was an 80386, then the machine was considered slow.
  • If the computer had less than 6MB of RAM, then the machine was considered slow.
  • If the display driver† admitted that it was slow, then the machine was considered slow.
  • Otherwise, the machine was considered fast.

That bit about the display driver is a little strange. Windows actually trusted display drivers to report when they were slow. The guidance in the device driver documentation was to mark a driver as slow if it did not perform graphics hardware acceleration, but of course no card manufacturer would admit that their card was slow! I suspect nobody ever set that bit. The “slow machine” flag was used only in a handful of places in the system. The two you’d be most likely to notice are whether animations should be on by default and whether disabled text should be shown as solid gray text (on slow machines) or with an embossed effect (on fast machines). The idea was to raise the requirements over time so that a “slow machine” was one that was slow from the point of view of whatever the performance standards for computers were at the time the corresponding operating system was released. Why this was not done I do not know for sure, but I have my guesses.

  • Upgrading your Windows 95 machine to Windows 98 could result in a machine that previously had been considered “fast” to be reclassified as “slow”. As a result, when you upgraded your computer, it actually lost functionality and looked uglier because some features which had been on by default shut themselves off.
  • The minimum recommended hardware requirements were high enough that the few things that were based on whether you had a “slow machine” really didn’t matter any more. All machines that met the Windows 98 hardware requirements could certainly handle text embossing without any real problems.
  • As noted above, no video card manufacturer would voluntarily mark their driver as “slow” anyway.
  • The Windows 98 team just plain forgot.

Whatever the reason, the standard for a “slow machine” remained unchanged, and soon the level of hardware reached the point where even the cheapest computers on the market easily blew past all the “fast machine” requirements. In Windows NT, the algorithm for determining whether you had a fast or slow machine was therefore simplified to a single step:

  • All machines are fast.‡

In other words, there’s nothing to see here any more. Move along. Nitpicker’s corner †s/the display driver/the Windows 95 display driver/

‡Some people seem to have lose the ability to read sentences in context. For those people, may I first recommend a reading class. In the meantime, you can pretend that the sentence reads “As far as the SM_SLOWMACHINE system metric is concerned, all machines are fast for the purpose of determining what the return value of GetSystemMetrics should be.”

Topics
History

Author

Raymond has been involved in the evolution of Windows for more than 30 years. In 2003, he began a Web site known as The Old New Thing which has grown in popularity far beyond his wildest imagination, a development which still gives him the heebie-jeebies. The Web site spawned a book, coincidentally also titled The Old New Thing (Addison Wesley 2007). He occasionally appears on the Windows Dev Docs Twitter account to tell stories which convey no useful information.

0 comments

Discussion are closed.