!! Rapidité !!

Résolu
ZogStriP Messages postés 164 Date d'inscription dimanche 16 novembre 2003 Statut Modérateur Dernière intervention 5 juillet 2005 - 17 juil. 2004 à 18:13
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 - 18 juil. 2004 à 14:28
Je voudrais savoir qu'est ce qui est plus rapide ?

1) Une division d'un grand nombre par un plus petit
2 )Ou une multiplication de deux nombre ?

??

Merci

ZogStriP
IA pour : Incomplet de l'Ancéphale %-6
http://blog.developpeur.org/zogstrip/
8-) www.rubikscubor.fr.st 8-)

#define ThatTheQuestion ((bb) || !(bb))

84 réponses

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
17 juil. 2004 à 19:22
ZogStrip, le break apres le return TRUE ne sert strictement a rien, puis que ta fonction aura rendu la main a la fonction appelante. Mais c vrai que ta fonction est bizar, et celle ci ne travaillant que sur des entiers, un chiffre come 3 ou 6, ne renverra rien...Enfin c ptet le but etant donné ke tous les nombres ont une racine carré..Mais bon, voila comment jlecrirais :

int isSquare(int nbre) {
int i = sqrt(nbre); //conversion implicite de double en int

i *= i;
if (i == nbre) return 1;

return 0;
}

Voila ++

Alhexman
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 juil. 2004 à 18:27
Ca dépend des cas: 100000/1 est surement plus rapide que certaines multiplications, mais en général, je dirais qu'une multiplication doit être plus rapide

#define ThatTheQuestion 1
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 juil. 2004 à 18:35
La multiplication est a tout coup plus rapide, il n'y a pas d'instruction plus lente que 'div'.

ciao...
BruNews, Admin CS, MVP Visual C++
0
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
17 juil. 2004 à 18:37
non les divisions prennent toutes le meme temps a moins que le compilateur ait optimisé le code et ait fait la division lors de la compilation...
int a = 1000;
int b = 1;
a/b va prendre autant de temps que n'importe quelle division.

Sinon effectivement les multiplications sont bcp plus rapides.
a+ ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
17 juil. 2004 à 18:40
ca tient aussi bien pour les reels que pour les entiers ?
0
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
17 juil. 2004 à 18:54
moi je voudrais connaitre l'interet de savoir si la multiplication est plus rapide que la division !!! je ne me suis jamais poser la question, et je ne vois pas ou serait l'utilité de savoir une telle chose...
Bob...

"La chance accorde ses faveur aux esprits avertis..."
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 juil. 2004 à 18:58
djl > me semble que oui mais je n'ai pas fait de mesure dessus, faudra tester pour etre sur.
LordBob > quand tu auras a faire un prog ou le temps de calcul est primordial, tu seras oblige d'y penser. En medecine c'est le cas par exemple.

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
17 juil. 2004 à 19:01
ouai, genre dans une operation tu essayera de remplacer les division par des multiplications
0
ZogStriP Messages postés 164 Date d'inscription dimanche 16 novembre 2003 Statut Modérateur Dernière intervention 5 juillet 2005 1
17 juil. 2004 à 19:07
C'etait pour savoir si ma fonction était rapide ou si il y avait plus rapide :

// Fonction permettant de savoir si un nombre est un carré :
int __stdcall isSquare(long nombre)
{
long compteur, tmpCarre;
for(compteur = 2; compteur < nombre; compteur++)
{
tmpCarre = compteur * compteur;
if(tmpCarre == nombre)
{
// Renvoie 1 :
return true;
break;
}else if(tmpCarre > nombre){
break;
}
}
return false;
}

ZogStriP
IA pour : Incomplet de l'Ancéphale %-6
http://blog.developpeur.org/zogstrip/
8-) www.rubikscubor.fr.st 8-)

#define ThatTheQuestion ((bb) || !(bb))
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 juil. 2004 à 19:11
Pas compris le but.

ciao...
BruNews, Admin CS, MVP Visual C++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 juil. 2004 à 19:16
savoir si un nombre est un carré parfait tiens
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 juil. 2004 à 19:19
Enleve cette boucle.
Prends la racine carree, et mets la en int.
compare si (racCar * RacCar) == nbr.

ciao...
BruNews, Admin CS, MVP Visual C++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 juil. 2004 à 19:21
Rectif:
pas de cast en int pour certitude.

ciao...
BruNews, Admin CS, MVP Visual C++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 juil. 2004 à 19:27
Oui c'est bien cast int, on a le resultat a coup sur.
Passer du coq a l'ane, je ne sais plus ou j'en suis.

ciao...
BruNews, Admin CS, MVP Visual C++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 juil. 2004 à 19:34
ZogStriP et AlexMAN, vu que vous etes tous 2 clients asmfr maintenant, sortez donc le listing produit par le compilo et regardez si on peut gagner qlqchose.
- Si appel externe pour sqrt, alors inserer asm correspondant.
- isSquare doit prendre param en registre (gros benef).
Bon exercice, non ?

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
17 juil. 2004 à 19:38
BruNews > wè pas mal, surtt si tu te proposes pour corriger apres...Je mi attelle de suite.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 juil. 2004 à 19:45
ok bien entendu.
et y a pas le feu, bien reflechir avant proposition, me permettra de finir ce que j'ai en route.

ciao...
BruNews, Admin CS, MVP Visual C++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 juil. 2004 à 19:55
au fait, DWORD en param pour tres longue plage, ok ?

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
17 juil. 2004 à 19:58
Brunews, le code assembleur generé par VC est incomprehensible ! j'obtien des fonctions du style
ldarg.0 ; _nbre$
conv.r8
call ?sqrt@@$$J0YANN@Z
conv.i4
stloc.0 ; _i$

je dois prendre le code asm avec un desassembleur ?
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
17 juil. 2004 à 20:08
Nop c bon, j'ai trifouillé ds les propriété du projet et jobtiens du "bon" asm...

++ Brunews
0
Rejoignez-nous