Question

Lorsque vous appelez CoInitializeEx , vous pouvez spécifier les valeurs suivantes pour dwCoInit :

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

Qu'est-ce que le titre suggestif "Vitesse sur la mémoire"? valeur faire? Est-il ignoré ces jours-ci dans COM?

Était-ce utile?

La solution

Je ne sais pas s'il est toujours utilisé, mais cela devait modifier l'équilibre utilisé par les algorithmes COM.

Si vous avez des tonnes de mémoire et que vous voulez de la vitesse à tout prix, vous devez définir cet indicateur.

Dans les environnements à faible mémoire, laisser cette option désactivée favoriserait une utilisation réduite de la mémoire.

Il s'avère que le merveilleux Raymond Chen (de " The Old New Thing " a désormais pesé sur le sujet et, malgré la signification de ce drapeau , à faire, il ne fait apparemment rien du tout.

Voir Que fait le drapeau COINIT_SPEED_OVER_MEMORY? faire CoInitializeEx? pour plus de détails:

  

Quand devriez-vous activer ce mode? Peu importe, car, autant que je sache, aucun code dans COM ne modifie son comportement en fonction du fait que le processus a été placé dans ce mode ou non! Il semble que le drapeau ait été ajouté lors de l’introduction de DCOM, mais il n’a jamais été relié à quoi que ce soit. (Ou quel que soit le code qui y avait été connecté, il n'a jamais été expédié.)

http: //archives.neohapsis. com / archives / microsoft / divers / dcom / 2001-q1 / 0160.html de Steve Swartz, l’un des architectes COM + originaux:

  

COINIT_SPEED_OVER_MEMORY est ignoré par COM.

Autres conseils

L'un des indicateurs que vous pouvez transmettre à CoInitializeEx est COINIT_SPEED_OVER_MEMORY, documenté sous la forme: https://msdn.microsoft.com/en-us/library/ms678505 (v = VS.85) .aspx

COINIT_SPEED_OVER_MEMORY: échangez votre mémoire contre de la vitesse. Cette documentation est déjà vague car elle ne dit pas dans quelle direction le commerce est effectué. Réduisez-vous la mémoire pour augmenter la vitesse ou augmentez-vous la mémoire en réduisant la vitesse? En fait, ce n'est ni l'un ni l'autre: si vous passez cet indicateur, vous indiquez à COM de consommer plus de mémoire afin de réduire l'utilisation de l'UC, en partant du principe que vous courez plus vite en exécutant moins de cycles.¹

La demande est une transition unidirectionnelle par processus. Une fois que n'importe qui dans le processus met COM en mode de vitesse supérieure à la mémoire, l'indicateur reste activé jusqu'à la fin du processus.

Quand devriez-vous activer ce mode? Peu importe, car, autant que je sache, aucun code dans COM ne modifie son comportement en fonction du fait que le processus a été placé dans ce mode ou non! Il semble que le drapeau ait été ajouté lors de l’introduction de DCOM, mais il n’a jamais été relié à quoi que ce soit. (Ou quel que soit le code qui y avait été connecté, il n'a jamais été expédié.)

¹ Comme vous le savez, consommer plus de mémoire ne garantit pas une exécution plus rapide, car une utilisation accrue de la mémoire augmente les risques de perte de mémoire cache N1 ou d'erreur de page, ce qui vous coûtera cher temps d'attente (mais pas dans l'utilisation du processeur).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top