Partager via


/OPT (Optimisations)

Mise à jour : novembre 2007

Contrôle les optimisations que LINK exécute pendant une génération.

/OPT:{REF | NOREF}
/OPT:{ICF[=iterations] | NOICF}
/OPT:{WIN98 | NOWIN98}

Arguments

  • REF | NOREF
    L'option /OPT:REF supprime les fonctions et/ou les données qui ne sont jamais référencées, contrairement à /OPT:NOREF qui les conserve.

    Par défaut, LINK supprime les fonctions packagées non référencées. Un objet contient des fonctions packagées (COMDAT) s'il a été compilé à l'aide de l'option /Gy. Cette optimisation s'appelle une suppression transitive COMDAT. Pour substituer cette valeur par défaut et faire en sorte que les COMDAT ne soient pas référencées dans le programme, spécifiez /OPT:NOREF. Vous pouvez utiliser l'option /INCLUDE pour substituer la suppression d'un symbole spécifique.

    Si l'option /DEBUG est spécifiée, la valeur par défaut de /OPT est NOREF (REF sinon) et toutes les fonctions sont conservées dans l'image. Pour substituer cette valeur par défaut et optimiser une génération de débogage, spécifiez /OPT:REF. L'option /OPT:REF désactive les liens incrémentiels.

    Vous devez marquer explicitement les données en tant que COMDAT à l'aide de __declspec(selectany).

    Si /OPT:REF est spécifié, /OPT:ICF est activé par défaut. Si vous souhaitez utiliser /OPT:REF, mais pas /OPT:ICF, vous devez spécifier les éléments suivants :

    link /opt:ref /opt:noicf
    

    La spécification de /OPT:ICF n'active pas l'option /OPT:REF.

  • ICF[= iterations**] | NOICF**
    Utilisez /OPT:ICF[=iterations] pour exécuter un repli COMDAT identique. Les COMDAT redondants peuvent être supprimés de la sortie de l'éditeur de liens. iterations spécifie le nombre d'explorations des symboles à la recherche de doublons. Le nombre d'itérations par défaut est de deux. Des itérations supplémentaires peuvent détecter les doublons qui n'ont pas été trouvés lors du repli de l'itération précédente.

    Notez que le comportement de l'éditeur de liens est différent lorsque ICF est activé par défaut avec la spécification explicite /OPT:REF et lorsque vous spécifiez explicitement /OPT:REF,ICF. L'ICF par défaut avec /OPT:REF ne replie pas les données en lecture seule. Cela comprend tous les fichiers .rdata, .pdata et .xdata. Cependant, l'ICF par défaut avec /OPT:REF entraîne moins de fonctions repliées lors de la production d'images pour Itanium et x64 parce que les fonctions de ces modules présentent une plus grande dépendance aux données en lecture seule, par exemple .pdata et .xdata. Pour obtenir l'ICF complet, spécifiez /OPT:ICF explicitement.

    Les fonctions sont placées dans les COMDAT à l'aide de l'option du compilateur /Gy et les données const sont placées dans les COMDAT. Pour obtenir un exemple de spécification des données en vue du repli, consultez selectany.

    ICF est activé par défaut si REF est activé et doit être activé explicitement dans une version debug. Il est possible de spécifier NOICF si REF est spécifié.

    Remarque :

    /OPT:ICF peut entraîner l'assignation de la même adresse à des fonctions différentes ou à des données membres en lecture seule (variables const compilées avec /Gy). Ainsi, /OPT:ICF peut interrompre un programme dépendant de l'adresse de fonctions ou de données membres en lecture seule qui est différente. Pour plus d'informations, consultez /Gy (Activer la liaison au niveau des fonctions).

  • WIN98 | NOWIN98
    WIN98 et NOWIN98 contrôlent l'alignement des sections dans l'image finale. Pour les applications Windows 98, l'alignement des sections sur 4 Ko au maximum améliore le temps de chargement (en permettant au gestionnaire de mémoire de Windows 98 de mettre en cache les images exécutables avec un minimum d'espace perdu). Cette valeur étant définie par défaut dans l'éditeur de liens, vous devez spécifier /OPT:NOWIN98 pour obtenir une version réduite (mais plus lente sous Windows 98) de l'application.

    WIN98 est activé par défaut. WIN98 n'est pas activé si :

    /OPT:WIN98 n'est pas activé par défaut pour les images susceptibles de grossir de plus de 25 % (selon les équations de croissance moyenne ci-dessous). En d'autres termes, /OPT:WIN98 ne sera pas activé pour les images plus petites. Vous devez activer /OPT:WIN98 explicitement pour être sûr que ce réglage ne vous affectera pas. Spécifiez /OPT:NOWIN98 pour obtenir une version plus petite (mais plus lente sous Windows 98) de votre application.

    Les améliorations sous Windows 98 fonctionnent uniquement lorsque les sections d'une image exécutable portable commencent sur une limite de page. L'option /OPT:WIN98 exécute l'alignement des fichiers nécessaire.

    Si vous générez des composants qui s'exécutent uniquement sous Windows NT ou Windows 2000, vous devez utiliser /OPT:NOWIN98.

    Cette modification n'a pas d'incidence sur le chargement des images ou sur le jeu de travail du processus. Elle n'en a que sur la taille du disque.

    Les points suivants vous aideront à calculer la croissance moyenne d'une image à l'aide de /OPT:WIN98 :

    • L'espace moyen perdu pour un alignement des fichiers de 4096 octets peut être mesuré par : nombre-de-sections-dans-image * 4096/2

    • L'espace moyen perdu pour l'alignement des fichiers de 512 octets en cours est : nombre-de-sections-dans-image * 512/2

    La croissance est donc la suivante :

    • Croissance-en-nombre-d'octets = nombre-de-sections-dans-image * (4096/2 - 512/2)

      ou, plus simplement :

      Croissance-en-nombre-d'octets = nombre-de-sections-dans-image * 1792

      Toutefois, cela ne prend pas en compte le fait que l'en-tête de l'image doit être rempli dans l'alignement des sections. Comme l'en-tête ne dépasse jamais 512 octets, la croissance supplémentaire est une constante de 4096 – 512, soit 3584.

    • Croissance-moyenne-en-nombre-d'octets = nombre-de-sections-dans-image * 1792 + 3584

    • Croissance-maximale-en-nombre-d'octets = nombre-de-sections-dans-image * (4096 - 512 + 3584)

    Pour obtenir le nombre de sections, utilisez l'outil DUMPBIN sur un fichier exécutable. Le résumé vous donnera une liste des sections dans cette image. En général, de 3 à 5 sections sont ajoutées à cette valeur.

    N'utilisez pas /OPT:WIN98 dans le cas où une image exécutable portable serait très petite. Même si une image est candidate aux téléchargements, l'espace perdu est rempli de zéros et est également compacté.

Notes

En général, les optimisations diminuent la taille des images et augmentent la vitesse du programme au prix de l'augmentation de la durée de la liaison.

Vous pouvez utiliser l'option /VERBOSE pour afficher les fonctions supprimées par /OPT:REF et les fonctions repliées par /OPT:ICF.

Pour définir cette option de l'éditeur de liens dans l'environnement de développement Visual Studio

  1. Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d'informations, consultez Définition des propriétés de projets Visual C++.

  2. Cliquez sur le dossier Éditeur de liens.

  3. Cliquez sur la page de propriétés Optimisation.

  4. Modifiez une des propriétés suivantes :

    • Activation du repli COMDAT

    • Optimisation pour Windows 98

    • Références

Pour définir cette option de l'éditeur de liens par programme

Voir aussi

Référence

Définition des options de l'Éditeur de liens

Options de l'Éditeur de liens