/OPT (Optimisations)
Contrôle les optimisations que LINK exécute pendant une génération.
/OPT:{REF | NOREF}
/OPT:{ICF[=iterations] | NOICF}
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 de fois où les symboles sont analysés à 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.Consultez /Gy (Activer la liaison au niveau des fonctions) pour plus d'informations.
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
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++.
Cliquez sur le dossier Éditeur de liens.
Cliquez sur la page de propriétés Optimisation.
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
- Consultez les propriétés EnableCOMDATFolding et OptimizeReferences.