Frage

Wenn CoInitializeEx aufrufen, können Sie die folgenden Werte für dwCoInit angeben:

typedef enum tagCOINIT {
    COINIT_MULTITHREADED     = 0x0,
    COINIT_APARTMENTTHREADED = 0x2,
    COINIT_DISABLE_OLE1DDE   = 0x4,
    COINIT_SPEED_OVER_MEMORY = 0x8,
} COINIT;

Was bedeutet der suggestiv den Titel „Geschwindigkeit über Speicher“ Wert tun? Ist es ignoriert diesen Tagen in COM?

War es hilfreich?

Lösung

Keine Ahnung, ob es immer noch verwendet, aber es wurde bedeutet, das Gleichgewicht durch die COM-Algorithmen zu ändern.

Wenn Sie Tonnen Gedächtnis haben und wollten Geschwindigkeit um jeden Preis, würden Sie das Flag gesetzt.

In Low-Memory-Umgebungen, die Flagge weg verlassen würde reduzierten Speicherverbrauch begünstigt.


Wie sich herausstellt, die wunderbare Raymond Chen (von "The Old New Thing" trotz allem, was über das Thema und Ruhm) jetzt wog hat war, dass Flag zu tun, tut es offenbar nichts.

Siehe Was bedeutet die COINIT_SPEED_OVER_MEMORY Flagge zu CoInitializeEx tun für weitere Informationen:

  

Wann sollten Sie diesen Modus aktivieren? Es spielt keine Rolle, denn soweit ich das beurteilen kann, gibt es keinen Code an beliebiger Stelle in COM ist, die sein Verhalten ändert sich je nachdem, ob der Prozess in diesem Modus gesetzt wurde! Es sieht aus wie das Flag hinzugefügt wurde, als DCOM eingeführt wurde, aber es wurde nie etwas angespannt. (Oder was auch immer Code, der es nie ausgeliefert angeschlossen worden war.)

Auch http: //archives.neohapsis. com / Archiv / microsoft / various / dcom / 2001-q1 / 0160.html von Steve Swartz, einer der ursprünglichen COM + Architekten:

  

COINIT_SPEED_OVER_MEMORY wird ignoriert von COM.

Andere Tipps

Eine der Fahnen Sie CoInitializeEx passieren kann, ist COINIT_SPEED_OVER_MEMORY, die als dokumentiert ist: https://msdn.microsoft.com/en-us/library/ms678505 (v = VS.85) aspx

COINIT_SPEED_OVER_MEMORY: Handel Speicher für Geschwindigkeit. Diese Dokumentation ist bereits vage, da sie nicht sagt, in welcher Richtung der Handel gemacht wird. Reduzieren Sie die Speichergeschwindigkeit zu erhöhen, oder Speicher zu erhöhen, indem Geschwindigkeit zu reduzieren? Eigentlich ist es nicht: Wenn Sie dieses Flag übergeben, dann COM Sie anweist, mehr Speicher in einem Versuch zu verbrauchen CPU-Auslastung zu verringern, unter der Annahme, dass Sie schneller laufen durch weniger cycles.¹ Ausführung

Die Anforderung ist ein pro-Prozess Einweg Übergang. Sobald jemand irgendwo in dem Prozess COM in Geschwindigkeit-over-Speicher-Modus setzt, bleibt das Flag gesetzt und bleibt, bis der Prozess beendet wird eingestellt.

Wann sollten Sie diesen Modus aktivieren? Es spielt keine Rolle, denn soweit ich das beurteilen kann, gibt es keinen Code an beliebiger Stelle in COM ist, die sein Verhalten ändert sich je nachdem, ob der Prozess in diesem Modus gesetzt wurde! Es sieht aus wie das Flag hinzugefügt wurde, als DCOM eingeführt wurde, aber es wurde nie etwas angespannt. (Oder was auch immer Code, der es nie ausgeliefert angeschlossen worden war.)

¹ Wie Sie wissen, mehr Speicher raubend ist keine Garantie, dass Sie tatsächlich schneller laufen, weil höhere Speichernutzung erhöht die Chancen, dass das, was benötigen Sie eine L1-Cache-Miss oder einen Seitenfehler übernehmen, die Sie teuer zu stehen kommen werden Wartezeit (wenn auch nicht in der CPU-Auslastung).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top