IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Gestionnaire de configuration debug / release - x86 / x64


Sujet :

C#

  1. #1
    Membre éprouvé Avatar de electroremy
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2007
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 934
    Points : 1 274
    Points
    1 274
    Par défaut Gestionnaire de configuration debug / release - x86 / x64
    Bonjour,

    J'ai du mal avec le gestionnaire de configuration qui permet de choisir entre les modes debug et release et les plateformes Any CPU / x86 / x64

    Mon but est de générer, pour mon appli :

    - un executable release x86 pour les utilisateurs en 32 bits

    - un executable release x64 pour les utilisateurs en 64 bits

    - et bien sûr un debug (x64) pour le debbuggage

    J'arrive à générer mes exécutables mais il y a un certain désordre dans les fichiers... j'ai de nombreux répertoires debug et release dupliqués où tout se mélange


    Je n'arrive pas à supprimer les lignes dans les listes déroulantes "configuration de solutions" et "plateforme"

    Comment faire ça proprement, dans le gestionnaire de configuration et dans les propriétés du projet ?

    Par rapport à un exe en mode debug, le temps d'execution d'un release x64 avec les optimisations peut être 4 fois inférieur ! (mon programme réalise de nombreux calculs, avec des algorithmes optimisés et une implémentation optimisée)

    Autre truc chiant : pour générer mes .exe je dois à chaque fois choisir debug ou release et ensuite la plateforme.
    J'aimerais pouvoir générer tous mes .exe d'un seul coup, avec chaque .exe dans le bon dossier (Release64, Debug64, Release32)
    Pourquoi :
    - le programme fait beaucoup de calculs, et pour ma batterie de tests je préfère le faire en release.
    - d'autre part - et c'est ça le plus important - seul les tests en mode release permet de voir si une optimisation du code ou de l'algorithme est efficace.

    En effet, il m'est déjà arrivé d'avoir une fonction A et une fonction B avec :
    - en mode debug A plus rapide de B
    - en mode release B plus rapide que A

    Merci et à bientôt
    Quand deux personnes échangent un euro, chacun repart avec un euro.
    Quand deux personnes échangent une idée, chacun repart avec deux idées.

  2. #2
    Membre éprouvé Avatar de electroremy
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2007
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 934
    Points : 1 274
    Points
    1 274
    Par défaut
    Bonjour,

    Autre question, peut-être plus importante :

    Ne vaut-il mieux pas que je compile mes projets pour "Any CPU" plutôt que de me compliquer la vie en faisant une version x86 et une version x64 ?

    Sur un ordinateur Windows 7 64 bits, les tests montrent des performances en release similaires avec l'EXE généré en AnyCPU qu'avec l'EXE généré pour x64

    Bonne nouvelle donc, il suffit de rester en Any CPU

    Je préfère quand même être certain que le programme est compatible avec les plateformes 32 bits ; je dois tester mon EXE AnyCPU sous une version 32 bit de windows. Mais je n'ai plus aucun PC Windows 32 bits en état de marche sous la main (sauf un antique Cyrix 166+ sous W95)

    Mon programme utilise 3 dlls dont deux correspondant à des projets C# compilés en Any CPU, la 3ième je ne sais pas.

    J'ai essayé de lancer mon programme avec l'émulateur Windows XP Mode, mais je n'accède pas à la page me permettant d'installer le Framework .net 4 (la plupart des sites Internet ne sont pas accessibles et sans Internet pas de mise à jour possible ; windows Update plante aussi)

    Comment faire ?

    Avec Seven 64bits, y-a-t-il un moyen de force un .EXE de se lancer exclusivement en mode 32 bits pour voir s'il va fonctionner correctement sur un environnement 32 bits ?

    A bientôt
    Quand deux personnes échangent un euro, chacun repart avec un euro.
    Quand deux personnes échangent une idée, chacun repart avec deux idées.

  3. #3
    Membre éprouvé Avatar de electroremy
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2007
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 934
    Points : 1 274
    Points
    1 274
    Par défaut
    Bonjour,

    Un vieux PC portable sous XP qui ne redémarrait plus est finalement repartit (problème de batterie, d'alim ou de disque dur je pense : quand je le branche sur secteur, seul l'écran de démarrage du BIOS d'affiche et il est bloqué, mais une fois qu'il est alimenté depuis une demi heure, il démarre Windows XP)

    Ce PC n'est plus à jour depuis un certain temps mais il avait déjà le framework .NET 4.0

    Les exécutables 32 bits et Any Cpu fonctionnent, l’exécutable x64 déclenche une erreur "le fichier n'est pas un exécutable 32 bits correct"

    Au niveau des performances, la version Any CPU est 5% plus lente. Mais si on recommence le calcul, les performances s'améliorent et la version Any CPU est aussi rapide que la version 32 bits.

    Lors du lancement du programme, windows ne traite pas tout le code de l'appli, qui est traduite du langage intermédiaire de .NET en code machine qu'au fur et à mesure. D'où une amélioration des performances lors du deuxième calcul.

    Bonne surprise : le logiciel n'est pas si lent bien que le PC portable soit un Packard Bell Easy Note C3300 avec un Athlon XP d'un coeur à 1,91 GHz et 256 Mo de RAM
    Mon PC actuel est un Intel i7 à 3,4 GHz avec 16Go de RAM et une carte graphique NVIDIA GeForce GTX570

    Voici les performances ancien PC / nouveau PC :
    - détection de contour dans un BMP en mémoire : 62 ms / 13 ms
    - calcul sur de grandes quantités de nombres entiers 64 bits : 106 secondes / 11 secondes
    - génération et écritures fichiers : 9,3 secondes / 1,6 secondes

    De façon étonnante, l'affichage 2D et 3D n'est pas trop lent sur l'ancien PC ; mais le lissage 3D Open GL n'est pas fait sur l'ancien PC alors qu'il l'est sur le nouveau, ceci alors que le code est le même.

    Par rapport à la version x86, les versions x64 et Any CPU sont jusque 40% plus rapide sur mon PC actuel.

    Là aussi, la version Any CPU est légèrement moins performante que la x64 lors de la première exécution.

    Je ne considère pas le sujet résolut, car la question de tester un EXE x86 32 bits se pose toujours. Le vieux portable Packard Bell va finir par lâcher un jour.

    A bientôt
    Quand deux personnes échangent un euro, chacun repart avec un euro.
    Quand deux personnes échangent une idée, chacun repart avec deux idées.

  4. #4
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 899
    Points : 1 916
    Points
    1 916
    Par défaut
    La version 32 bit peut être exécutée sur un Windows 32 (nativement) ou 64 (par les outils de compatibilité) ; la version 64 ne fonctionne que sur un Windows 64. La cible Any CPU va générer les deux versions et les combiner en un seul fichier pour qu'ils soient exécutables nativement sur toutes les 2 versions de Windows. La configuration Debug est prévue pour être exécutée au sein de Visual Studio, enfin d'effectuer le débogage ; il peut effectivement être utile de fournir des version Debug d'une dll afin de bénéficier du débogage dans un projet qui l'utilise. Ce sont par contre les versions Release qui doivent être fournies aux utilisateurs.

    Dans Visual Studio tu fais "à la main" la génération des exécutables (à ce sujet tu peux afficher des boutons supplémentaires dans la barre d'outil pour sélectionner la plateforme cible en plus de la configuration). Si tu veux réaliser plusieurs traitements "en un seul clic" il faut envisager un système d'automatisation des tâches comme Jenkins.

Discussions similaires

  1. Configuration active Debug / Release
    Par olibara dans le forum C#
    Réponses: 3
    Dernier message: 18/11/2008, 18h15
  2. Réponses: 5
    Dernier message: 21/06/2006, 14h02
  3. Passage Mode debug -> release
    Par Bayard dans le forum MFC
    Réponses: 2
    Dernier message: 08/05/2006, 13h06
  4. Réponses: 3
    Dernier message: 18/08/2005, 10h17
  5. chargement DLL mode debug/release
    Par bihorece dans le forum C++Builder
    Réponses: 3
    Dernier message: 21/06/2004, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo