begin process at 2012 05 28 14:28:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

boucle plus rapide que simple déclaration


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

boucle plus rapide que simple déclaration

lundi 30 juillet 2007 à 08:05:29 | boucle plus rapide que simple déclaration

zozizozu

Bonjour, et excusez la sotise de ma question, mais est-ce qu'une boucle est plus rapide qu'une simple déclaration successive de ses items?
En gros, est que l'execution de :

for(int compteur = 0 ; compteur < 3 ; compteur++){
printf("Recu : %i",compteur);
}

est plus rapide que :

printf("Recu : 0");
printf("Recu : 1");
printf("Recu : 2");

?

Merci d'avance
lundi 30 juillet 2007 à 08:12:39 | Re : boucle plus rapide que simple déclaration

vicenzo

Membre Club
Réponse acceptée !
Plus rapide a écrire mais jamais plus rapide à exécuter...
lundi 30 juillet 2007 à 09:00:35 | Re : boucle plus rapide que simple déclaration

zozizozu

Genial, cela me rassure drolement.
Merci encor .
mardi 31 juillet 2007 à 17:04:06 | Re : boucle plus rapide que simple déclaration

katsankat

Membre Club
Explication. Je sais pas si tu connais GCC mais il a une option sympa qui montre les instructions assembleur qu'il génère.

Premier fichier
#include <stdio.h>

int main ()
{
 char *s = "test";

 puts(s);
 puts(s);
 puts(s);

 return 0;
}


Compiler avec gcc -S test.c il va générer test.s, ouvrir ce fichier. Il contient :

    .file    "test.c"
    .def    ___main;    .scl    2;    .type    32;    .endef
    .section .rdata,"dr"
LC0:
    .ascii "test\0"
    .text
.globl _main
    .def    _main;    .scl    2;    .type    32;    .endef
_main:
    pushl    %ebp
    movl    %esp, %ebp
    subl    $24, %esp
    andl    $-16, %esp
    movl    $0, %eax
    addl    $15, %eax
    addl    $15, %eax
    shrl    $4, %eax
    sall    $4, %eax
    movl    %eax, -8(%ebp)
    movl    -8(%ebp), %eax
    call    __alloca
    call    ___main
    movl    $LC0, -4(%ebp)
    movl    -4(%ebp), %eax
    movl    %eax, (%esp)
    call    _puts

    movl    -4(%ebp), %eax
    movl    %eax, (%esp)
    call    _puts

    movl    -4(%ebp), %eax
    movl    %eax, (%esp)
    call    _puts

    movl    $0, %eax
    leave
    ret
    .def    _puts;    .scl    3;    .type    32;    .endef



Deuxième fichier, avec une boucle

#include <stdio.h>
int main ()
{
 char *s = "test";
 int n;

 for (n=0; n<3; n++)
 puts(s);

 return 0;
}


re-compil:

    .file    "test.c"
    .def    ___main;    .scl    2;    .type    32;    .endef
    .section .rdata,"dr"
LC0:
    .ascii "test\0"
    .text
.globl _main
    .def    _main;    .scl    2;    .type    32;    .endef
_main:
    pushl    %ebp
    movl    %esp, %ebp
    subl    $24, %esp
    andl    $-16, %esp
    movl    $0, %eax
    addl    $15, %eax
    addl    $15, %eax
    shrl    $4, %eax
    sall    $4, %eax
    movl    %eax, -12(%ebp)
    movl    -12(%ebp), %eax
    call    __alloca
    call    ___main
    movl    $LC0, -4(%ebp)
    movl    $0, -8(%ebp)
L2:
    cmpl    $2, -8(%ebp)
    jg    L3
    movl    -4(%ebp), %eax
    movl    %eax, (%esp)
    call    _puts

    leal    -8(%ebp), %eax
    incl    (%eax)
    jmp    L2
L3:
    movl    $0, %eax
    leave
    ret
    .def    _puts;    .scl    3;    .type    32;    .endef


Conclusion la version avec boucle crée deux labels supplémentaires, incrémente une valeur et exécute quelques instructions jump que la 1re version ne fait pas.


Cette discussion est classée dans : boucle, simple, printf, rapide, recu


Répondre à ce message

Sujets en rapport avec ce message

RAND : éviter de sortir un nombre déjà sorti... prob ! [ par did2604 ] Bonsoir,J'ai un problème assez spécial à vous exposer. Je me casse la tête dessus depuis 2h et pas moyen de trouver le bug. Voilà, j'utilise donc la f encore un pb en c svp....... [ par natacha86 ] j'ai essayer de séparer les fonctions mais ca ne marche pas...#include #include #include #include #include #define MAX 1000000 boucle qui ne fonctionne pas [ par florian1121 ] Bonjour!!J'ai un probleme au niveau de mon programme, lorsque je le lance la boucle for dans les case ,ca empeche la boucle de switch de recommencer, Debutant : Boucle et C :) [ par Tkaos ] Bonjour, Voila je suis nouveau ici et dans l'univers de la progz, Bon vais pas vous faire attendre, voici mon probleme : Comme je suis caremment novic pb programme très très simple [ par surfeurnet ] voila il s'agit d'un programme très simple qui ne fait pas d'erreurs à la compilation avec dev-cpp mais qui plante quand je l'exécute :#include char n Probleme de boucle infinie [ par darkwhite ] Salut à tous, abcrésultat000000100 Faire un "Cast" sur une variable! [ par Progez ] Bonjour, je sais pas si vous allez comprendre ma question! mais elle est assez simpleJ'ai une boucle foret jai 25 variable nommée Case_P1 à Case_P25Je Boucle Simple avec des DBEdit [ par jpv424 ] Bonjour à tous et merci pour votre aide.J'ai un problème ultra simple pour des génie comme vous.void __fastcall TForm1::BitBtn2Click(TObject *Sender){ boucle imbriquée et pyramide de nombres [ par Smanyx ] Salut! Je voudrais arriver à écrire un programme en C qui affiche la pyramide ci-dessous: ----------1 ---------232 --------34543 -------456 aide sur le fonctionnement de GetMessage Pb pour sortire de la boucle [ par achatagogo ] salut,je veux réalisé sous DEV C++ un programme qui me permet de tester des clavier. En effet, pour cela j'ai utilisé un HOOK sans DLL qui me permet d


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,045 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales