When calling CoInitializeEx, you can specify the following values for dwCoInit:
typedef enum tagCOINIT { COINIT_MULTITHREADED = 0x0, COINIT_APARTMENTTHREADED = 0x2, COINIT_DISABLE_OLE1DDE = 0x4, COINIT_SPEED_OVER_MEMORY = 0x8, } COINIT;
What does the suggestively titled ‘speed over memory’ value do? Is it ignored these days in COM?
No idea if it’s still used but it was meant to change the balance used by the COM algorithms.
If you had tons of memory and wanted speed at all costs, you would set that flag.
In low-memory environments, leaving that flag off would favor reduced memory usage.
As it turns out, the marvellous Raymond Chen (of "The Old New Thing" fame) has now weighed in on the subject and, despite what that flag was meant to do, it apparently does nothing at all.
See What does the COINIT_SPEED_OVER_MEMORY flag to CoInitializeEx do? for more details:
Also http://archives.neohapsis.com/archives/microsoft/various/dcom/2001-q1/0160.html from Steve Swartz, one of the original COM+ architects: