Una de las banderas se pueden pasar a CoInitializeEx es COINIT_SPEED_OVER_MEMORY, que se documenta como: https://msdn.microsoft.com/en-us/library/ms678505(v=VS.85).aspx
COINIT_SPEED_OVER_MEMORY: Memoria de Comercio para la velocidad. Esta documentación ya es vaga ya que no indica en qué dirección se está realizando la operación. ¿Está reduciendo la memoria para aumentar la velocidad o aumentar la memoria reduciendo la velocidad? En realidad, no es ninguno de los dos: si pasa este indicador, ordena a COM que consuma más memoria en un intento de reducir el uso de la CPU, bajo la suposición de que ejecuta más rápido ejecutando menos ciclos.¹
La solicitud es una procesar la transición unidireccional Una vez que alguien en cualquier parte del proceso pone COM en el modo de velocidad sobre memoria, la bandera permanece establecida y permanece establecida hasta que el proceso finaliza.
¿Cuándo debería activar este modo? No importa, porque hasta donde puedo decir, no hay ningún código en ningún lugar de COM que cambie su comportamiento en función de si el proceso se ha colocado en este modo. Parece que la bandera se agregó cuando se presentó DCOM, pero nunca se conectó a nada. (O cualquier código que haya sido conectado nunca se envió).)
¹ Como ya sabe, consumir más memoria no es garantía de que realmente vaya a funcionar más rápido, porque un mayor uso de memoria aumenta las posibilidades de que lo que necesita sea un caché L1 o un error de página, lo que le costará caro en el tiempo de espera (aunque no en el uso de la CPU).
¿Alguna referencia para eso? –
http://msdn.microsoft.com/en-us/library/ms678505(VS.85).aspx – paxdiablo