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++Builder Discussion :

La vitesse d'un programme est-elle liée à la taille de son exécutable ?


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    45
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 45
    Points : 37
    Points
    37
    Par défaut La vitesse d'un programme est-elle liée à la taille de son exécutable ?
    salut à tous !

    - Lorsque je compile un code en C (c++builder 5), et un code équivalent en pascal, la taille de l'exécutable écrit en C et SUPERIEURE à celle de l'exécutable écrit en pascal ? Alors pourquoi dit-on souvent que le C est plus rapide que le pascal ?

    - Est-ce que la vitesse d'exécution d'un programme est liée à la taille de son exécutable ?

    Merci !!

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 388
    Points : 1 775
    Points
    1 775
    Par défaut
    Salut !

    Oui, mais pas dans le sens où un programme plus petit serait plus rapide qu'un programme plus grand !

    On le démontre assez facilement en comparant le temps pris par un traitement dans une boucle (n * 1) et le temps pris par une succession de n traitements !

    A plus !

  3. #3
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Plus un langage est de haut niveau, plus il sera lent. Et normalement si prend on un langage comme l'Assembleur (le plus bas niveau possible) il va falloir beaucoup plus de ligne de code pour faire exactement la même chose qu'en C ou C++. Pourtant l'assembleur est plus rapide. Tout dépand aussi du genre de code et l'optimisation du compilateur
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  4. #4
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut
    Salut !

    A mon avis, la taille de l'exécutable peut affecter la vitesse de l'exécution, puisque par exemple si ce fichier contient des images de grandes taille dans ces ressource, et doivent être chargées...etc. alors que le même programme qui contiendrai moins de ressources, sera sûrement fonctionnel de façon plus rapide.

    D'autre part, c'est sûr que le compilateur choisi a un impact direct sur l'exécutable, et chaque compilateur a sa propre grammaire, génération et l'optimisation du code binaire.

    Reste le travail du programmeur, puisque lui aussi jouera un rôle très important pour l'optimisation de son code, puisque le compilateur n'est pas intelligent, et malgré ça fait de son mieux selon des règles pour optimiser le tout !
    je prend un exemple :
    Le compilateur va générer normalement un code assembleur (ici avec les mnémoniques) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mul [Emplacement_X],2
    mul [Emplacement_X],4
    Une optimisation sera peut être fait en se basant sur :
    - Une multiplication et beaucoup plus lent qu'une addition
    - Une addition est plus lente qu'un décalage


    on aura ainsi un truc comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Shl [Emplacement_X],1  //SHL veut dire décalage à gauche; 2 décalage de 2 bits
    shl [Emplacement_X],2
    mais je crois pas du tout que le code sera réduit par le compilateur en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    shl [Emplacement_X], 3
    Et y a une très grande différence entre C++ Builder et le C++ tout court, puisque il faut voir aussi si la VCL par exemple à bien été optimisé pour ce qui concerne le temps et mémoire








    J’espère vous avoir apporté une aide sur quelque chose



    A+
    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  5. #5
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Et n'oubliez pas l'importance de la mémoire cache.

    Si la partie la plus utilisée de votre programme est suffisamment petite pour pouvoir entrer dans la mémoire cache de votre processeur, la vitesse explose. Quoique de nos jours avec des mémoire cache de 2 Moctets, en s'en fout un peu. Mais à l'époque du pentium 1, avec 8 kOctets de cache programme, et 8 kOctets de cache de données, il fallait jouer serré.

    Il vaut mieux faire un petit programme avec des tests et des branchements conditionnels, qu'un long programme linéaire. Une fois les tables de prédictions de branchement bien réglées, les échecs de branchements diminuent et la vitesse augmente car les boucles s'effectuent depuis la mémoire cache.

    C'est tout un art...
    @ bientôt...

    Salut & @+ sur 3W!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Free Pascal] Comment savoir quelle ligne du programme est la cause d'une erreur à l'exécution
    Par NOVICE76 dans le forum Free Pascal
    Réponses: 5
    Dernier message: 04/09/2014, 20h46
  2. L'approche du marché par les indépendants est-elle liée à la culture ?
    Par jean_kevin_musclor dans le forum Développement 2D, 3D et Jeux
    Réponses: 41
    Dernier message: 30/07/2014, 17h27
  3. Réponses: 1
    Dernier message: 05/03/2012, 10h03
  4. Réponses: 10
    Dernier message: 19/09/2007, 11h46
  5. Une transaction est-elle liée à la BD ou à la DataSet ?
    Par tarbala dans le forum Bases de données
    Réponses: 1
    Dernier message: 17/01/2007, 09h27

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