cegdd Posté(e) April 19, 2014 Signaler Share Posté(e) April 19, 2014 petite question rapide elle aurait pu être demandée directement en chat mais bon pour mon projet en C, je dois faire des calculs pour adapter mon jeu à toutes les dimensions d'écrans, et pour ça je dois remplacer toutes mes valeurs fixes par de "fractions d'écran". pour ça deux solutions, exemple : screenw*0.75; ou (screenw/4)*3; les deux fonctionnent parfaitement mais lequel est le plus rapide pour un ordinateur ? une multiplication avec virgule ? ou une division suivi d'une multiplication ? je pense que ça se joue à pas grand chose mais j'ai une centaine d'opérations comme celle-ci au lancement d'un combat ou autre Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Droby Posté(e) April 19, 2014 Signaler Share Posté(e) April 19, 2014 (modifié) D'après un étranger : moins d’opération c'est plus rapide donc le premier. Edit: j'ai pas besoin de préciser que l'étranger c'est Cyrion ? Modifié April 19, 2014 par Drobat Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
vfrz Posté(e) April 19, 2014 Signaler Share Posté(e) April 19, 2014 J'aurais tendance à dire la même chose que Drobat Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mars073 Posté(e) April 19, 2014 Signaler Share Posté(e) April 19, 2014 je confirme mais bon vu qu'un ordinateur peut faire que +, -, * et /. Si tu as un Processeur à 3.6GHz le calcul va être exécuté en environ 1s/3.600.000.000 alors que le 2éme va être executé en 2s/3.600.000.000 ._. 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
cegdd Posté(e) April 20, 2014 Auteur Signaler Share Posté(e) April 20, 2014 ok merci a vous =) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
AlexMog Posté(e) May 7, 2014 Signaler Share Posté(e) May 7, 2014 (modifié) En réalité, c'est plus complexe que ça. Il faudrais tout décompiler en ASM pour voir ce que cela engendre réellement dans le code. pour l'ASM: méthode 1: push rbp mov rbp,rsp mov eax,DWORD PTR [rip+0xce] # 0x4005a4 mov DWORD PTR [rbp-0x4],eax movss xmm1,DWORD PTR [rbp-0x4] movss xmm0,DWORD PTR [rip+0xc2] # 0x4005a8 mulss xmm0,xmm1 movss DWORD PTR [rbp-0x4],xmm0 mov eax,0x0 pop rbp ret méthode 2: push rbp mov rbp,rsp mov eax,DWORD PTR [rip+0xde] # 0x4005b4 mov DWORD PTR [rbp-0x4],eax movss xmm0,DWORD PTR [rbp-0x4] movss xmm1,DWORD PTR [rip+0xd2] # 0x4005b8 divss xmm0,xmm1 movss xmm1,DWORD PTR [rip+0xca] # 0x4005bc mulss xmm0,xmm1 movss DWORD PTR [rbp-0x4],xmm0 mov eax,0x0 pop rbp ret Très clairement, tu fais appel moins de fois à ton processeur (14 appels contre 11), la première méthode est donc la plus rapide. Mais attention! Ce n'est valide que car les 2 cas proposent des float. En effet, si nous utilisions des int du début à la fin, la 2nde méthodes aurait été plus viable, pour éviter les casts inutiles. PS: je suis partit du principe que tu utilisait des floats pour tes calculs! Il faut savoir que les calculs entre floats sont BEAUCOUP (2.5*) plus lents que les calculs avec des int. Modifié May 7, 2014 par AlexMog Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
vfrz Posté(e) May 7, 2014 Signaler Share Posté(e) May 7, 2014 En réalité, c'est plus complexe que ça. Il faudrais tout décompiler en ASM pour voir ce que cela engendre réellement dans le code. pour l'ASM: méthode 1: push rbp mov rbp,rsp mov eax,DWORD PTR [rip+0xce] # 0x4005a4 mov DWORD PTR [rbp-0x4],eax movss xmm1,DWORD PTR [rbp-0x4] movss xmm0,DWORD PTR [rip+0xc2] # 0x4005a8 mulss xmm0,xmm1 movss DWORD PTR [rbp-0x4],xmm0 mov eax,0x0 pop rbp ret méthode 2: push rbp mov rbp,rsp mov eax,DWORD PTR [rip+0xde] # 0x4005b4 mov DWORD PTR [rbp-0x4],eax movss xmm0,DWORD PTR [rbp-0x4] movss xmm1,DWORD PTR [rip+0xd2] # 0x4005b8 divss xmm0,xmm1 movss xmm1,DWORD PTR [rip+0xca] # 0x4005bc mulss xmm0,xmm1 movss DWORD PTR [rbp-0x4],xmm0 mov eax,0x0 pop rbp ret Très clairement, tu fais appel moins de fois à ton processeur (14 appels contre 11), la première méthode est donc la plus rapide. Mais attention! Ce n'est valide que car les 2 cas proposent des float. En effet, si nous utilisions des int du début à la fin, la 2nde méthodes aurait été plus viable, pour éviter les casts inutiles. PS: je suis partit du principe que tu utilisait des floats pour tes calculs! Il faut savoir que les calculs entre floats sont BEAUCOUP (2.5*) plus lents que les calculs avec des int. Mais comment tu connais tout ça ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
cegdd Posté(e) May 7, 2014 Auteur Signaler Share Posté(e) May 7, 2014 merci pour ta réponse =) du coup j'imagine que : variable*0.123456789132456789 et aussi rapide que variable*0.1 ça reste un "float" pour l’ordinateur. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
AlexMog Posté(e) May 9, 2014 Signaler Share Posté(e) May 9, 2014 (modifié) merci pour ta réponse =) du coup j'imagine que : variable*0.123456789132456789 et aussi rapide que variable*0.1 ça reste un "float" pour l’ordinateur. exact, le registre fais la même taille dans les deux cas (je parle de registre ASM ici) Modifié May 9, 2014 par AlexMog Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
AlexMog Posté(e) May 9, 2014 Signaler Share Posté(e) May 9, 2014 Mais comment tu connais tout ça ? Années d'experiences, Epitech et tests personnels (on a recoder Objdump à epitech, donc on sais comment ça marche vue de l'interieur ) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
vfrz Posté(e) May 9, 2014 Signaler Share Posté(e) May 9, 2014 Années d'experiences, Epitech et tests personnels (on a recoder Objdump à epitech, donc on sais comment ça marche vue de l'interieur ) J'ai vu qu'il y a une école Epitech a Strasbourg (près de chez moi), il faut combien de moyenne général et quel niveau pour rejoindre cette école ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Azad Posté(e) May 10, 2014 Signaler Share Posté(e) May 10, 2014 Il me semble qu'il ne demande aucun niveau académique spécifique pour y entrer, et tu n'as pas forcément besoin de niveau en informatique pour y rentrer. Cependant, tu subiras la piscine dedans, ce qui t'inculquera de force de bonnes notions en informatiques. Mais je vais laisser AlexMog t'expliquer plus clairement tout ça, son niveau atteste de son école après tout. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
vfrz Posté(e) May 10, 2014 Signaler Share Posté(e) May 10, 2014 C'est à dire la piscine ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Azad Posté(e) May 10, 2014 Signaler Share Posté(e) May 10, 2014 http://www.epitech.eu/la-piscine.aspx Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Droby Posté(e) May 11, 2014 Signaler Share Posté(e) May 11, 2014 J'ai vu qu'il y a une école Epitech a Strasbourg (près de chez moi), il faut combien de moyenne général et quel niveau pour rejoindre cette école ? Il te faut un bac, de la motivation et beaucoup d'argent (en général tu fais un crédit étudiant pour l'avoir). Par contre tu peux dès à présent demander une journée découverte sur le site de l'école pour pouvoir la visiter avec un étudiant et en savoir un peu plus. (il t'offre le ptit déj et le repas du midi normalement ) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.