Désolé si je n'ai pas été clair ; je ne dis pas que ces détections dynamiques sont intéressantes dans votre cas précis (que je ne connais pas), c'était juste des exemples où la détection à l'exécution avait du sens. Le cœur de mon propos étant que ce que voulez faire ne fait pas partie de cette liste de cas pertinents, pour la bonne raison que c'est sûrement une mauvaise idée. Parce que vous voulez tester que ça fonctionne sous Windows (c'est très bien) mais vous sabordez le travail juste derrière (et ça c'est moins bien).
Je n'ai pas trouvé de réglage plus efficace que l'option -O3 de gcc/gfortran.
Je ne suis pas sûr de comprendre le lien avec mon message ; si vous répondez à ma partie sur la détection du CPU, voici une explication plus détaillée.
Si vous détectez à l'exécution le type de CPU, vous pouvez par exemple utiliser des versions spécifiques écrites en langage assembleur avec des instructions spécifiques à l'architecture. Le noyau Linux a par exemple des versions écrites en langage assembleur pour ses algorithmes de chiffrement, qui sont utilisées dynamiquement quand c'est possible. Mais ça nécessite du travail de la part du codeur (ce n'est pas juste un flag compilateur), aussi le jeu doit en valoir la chandelle. Et même si vous compiliez pour cette architecture spécifique avec gcc, il n'est pas dit que le compilateur soit assez intelligent pour générer de lui-même la version la plus optimisée (sinon les développeurs Linux auraient généré ce code plutôt que de l'écrire à la main...).
[^] # Re: Mauvaise idée ?
Posté par GuieA_7 (site web personnel) . En réponse au message détecter l'OS depuis un code compilé. Évalué à 1.
Désolé si je n'ai pas été clair ; je ne dis pas que ces détections dynamiques sont intéressantes dans votre cas précis (que je ne connais pas), c'était juste des exemples où la détection à l'exécution avait du sens. Le cœur de mon propos étant que ce que voulez faire ne fait pas partie de cette liste de cas pertinents, pour la bonne raison que c'est sûrement une mauvaise idée. Parce que vous voulez tester que ça fonctionne sous Windows (c'est très bien) mais vous sabordez le travail juste derrière (et ça c'est moins bien).
Je ne suis pas sûr de comprendre le lien avec mon message ; si vous répondez à ma partie sur la détection du CPU, voici une explication plus détaillée.
Si vous détectez à l'exécution le type de CPU, vous pouvez par exemple utiliser des versions spécifiques écrites en langage assembleur avec des instructions spécifiques à l'architecture. Le noyau Linux a par exemple des versions écrites en langage assembleur pour ses algorithmes de chiffrement, qui sont utilisées dynamiquement quand c'est possible. Mais ça nécessite du travail de la part du codeur (ce n'est pas juste un flag compilateur), aussi le jeu doit en valoir la chandelle. Et même si vous compiliez pour cette architecture spécifique avec gcc, il n'est pas dit que le compilateur soit assez intelligent pour générer de lui-même la version la plus optimisée (sinon les développeurs Linux auraient généré ce code plutôt que de l'écrire à la main...).