AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  

 

 Switch (compilation et perforamance)

Aller en bas 
+5
???
Wargamer
Devil37
Pepsy
Malax
9 participants
AuteurMessage
Malax
Utilisateur confirmé: Rang **
Malax


Messages : 496
Localisation : Aix-en-Provence
Projet Actuel : Lemmings Struggle (abandonné)

Switch (compilation et perforamance) Empty
MessageSujet: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyJeu 10 Juil 2008 - 10:21

Bonjour à tous,

J'essaye d'optimiser au mieux mon programme. J'ai une instruction switch avec plusieurs cas et dans 6 cas précis je dois écrire une fonction "if{...}else{...}". Est ce qu'il est préférable de faire ces tests à l'intérieur de l'instruction switch (et donc avoir 6 occurences de if, même si c'est dans un switch et donc seulemment un cas en particulier est lu) ou de les regrouper à l'extérieur en fonction d'une variable (pas en plus, puisqu'il y en a une pouvant le faire ) et donc de faire le test à chaque step mais après.

Je pense plutôt à le laisser à l'intérieur même si le programme semble plus long. Merci d'avance
Revenir en haut Aller en bas
Pepsy
Utilisateur confirmé: Rang ***
Pepsy


Messages : 608
Localisation : Devant mon ordinateur à écrire des lignes de codes
Projet Actuel : RPG

Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyJeu 10 Juil 2008 - 10:23

le mieux s'est de laisser a l'intérieur pour mieux te retrouver

_________________
TI DESSIN v0.7
Revenir en haut Aller en bas
http://creation-pepsy.ifrance.com
Devil37
Utilisateur confirmé: Rang *****
Devil37


Messages : 1815

Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyJeu 10 Juil 2008 - 10:39

Laisse à l'intérieur du switch.

L'optimisation, c'est le fait d'alléger les temps de calcul par l'ordinateur.
Le code est plus long, certes, mais en temps réel, l'ordinateur va suivre cette procédure (en simplifiant bien entendu :gniah: ):

Il rencontre un switch. La variable switchée est "_var" par exemple.
Pour "_var", il a plusieurs solutions: 1 ; 2 ; 3 ; 4 et 5 admettons.
Dans le contexte, "_var" est égale à 3.
L'ordinateur va aller exécuter le code qui se trouve après le case 3: jusqu'au prochain break;.
Dans ton cas, il y a une condition, avec un else derrière, du code à l'intérieur des deux.

C'est tout :pac_dr:

Donc l'ordinateur ne va lire que ce qui le concerne, c'est à dire le case 3:, c'est l'avantage du switch gnii

_________________
Unvanquished Territories, un MMORPG 3D:
Son Blog
Son Forum
Revenir en haut Aller en bas
Malax
Utilisateur confirmé: Rang **
Malax


Messages : 496
Localisation : Aix-en-Provence
Projet Actuel : Lemmings Struggle (abandonné)

Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyJeu 10 Juil 2008 - 11:07

ok je laisse comme ça
Revenir en haut Aller en bas
Wargamer
*Excellent utilisateur*
Wargamer


Messages : 6938
Projet Actuel : Bataille de cake au fruits

Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyJeu 10 Juil 2008 - 15:10

je réquisitionne ce topic noel
c'est plus rapide un switch ou une série de if? car ils revienne tous au m^me non?
if var=1 {}
if var=2{}
if var=3 {}
switch var
1
2
3

_________________
Switch (compilation et perforamance) Wargamer3
Règle #1 du CBNA, ne pas chercher à faire dans la subtilité; personne comprend
Revenir en haut Aller en bas
???
Utilisateur confirmé: Rang ****
???


Messages : 1240
Localisation : NLG, 93

Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyJeu 10 Juil 2008 - 15:35

Je suis pas sûr, car je n'utilise pas les switch, mais comme ça, je pense qu'il va lire tous les if, ce que ne fera pas le switch ❓
Revenir en haut Aller en bas
Pepsy
Utilisateur confirmé: Rang ***
Pepsy


Messages : 608
Localisation : Devant mon ordinateur à écrire des lignes de codes
Projet Actuel : RPG

Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyJeu 10 Juil 2008 - 20:32

d'après moi c le switch le plus rapide pour les même raison que ???

_________________
TI DESSIN v0.7
Revenir en haut Aller en bas
http://creation-pepsy.ifrance.com
Invité
Invité




Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyJeu 10 Juil 2008 - 20:41

ben le switch est plus rapide et organisé mais il n'execute qu'une fonction a la fois contrairement aux conditions :/

exemple 1

Code:
{
switch (keyboard_key)
{
case vk_up : {y-=1]
case vk_down : {y+=1]
case vk_left : {x-=1]
case vk_right : {x+=1]
}
}

exemple 2

Code:
{
if keyboard_check(vk_up) {y-=1}
if keyboard_check(vk_down) {y+=1}
if keyboard_check(vk_left) {x-=1}
if keyboard_check(vk_right) {y+=1}
}

dans le premier exemple on aura que 4 direction de mouvement or dans le deuxième on aura 8 direction...
Revenir en haut Aller en bas
Wargamer
*Excellent utilisateur*
Wargamer


Messages : 6938
Projet Actuel : Bataille de cake au fruits

Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyJeu 10 Juil 2008 - 21:37

ok super merci

_________________
Switch (compilation et perforamance) Wargamer3
Règle #1 du CBNA, ne pas chercher à faire dans la subtilité; personne comprend
Revenir en haut Aller en bas
Topaze22
*Excellent utilisateur*
Topaze22


Messages : 6213
Localisation : Sur la Lune
Projet Actuel : Projet HELLO/TOPAZE22 Mario Bros World

Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyJeu 17 Juil 2008 - 23:12

Devil37 a écrit:
Laisse à l'intérieur du switch.

L'optimisation, c'est le fait d'alléger les temps de calcul par l'ordinateur.
Le code est plus long, certes, mais en temps réel, l'ordinateur va suivre cette procédure (en simplifiant bien entendu :gniah: ):

Il rencontre un switch. La variable switchée est "_var" par exemple.
Pour "_var", il a plusieurs solutions: 1 ; 2 ; 3 ; 4 et 5 admettons.
Dans le contexte, "_var" est égale à 3.
L'ordinateur va aller exécuter le code qui se trouve après le case 3: jusqu'au prochain break;.
Dans ton cas, il y a une condition, avec un else derrière, du code à l'intérieur des deux.

C'est tout :pac_dr:

Donc l'ordinateur ne va lire que ce qui le concerne, c'est à dire le case 3:, c'est l'avantage du switch gnii
Erreur.
Ce n'est pas comme ça que procède le processeur. On aurait préféré que ce soit ainsi, mais ce n'est pas le cas.

Il regarde tout les "case" un par un, dans l'ordre en comparant avec la valeur à trouver. Il ne "saute" pas directement à la bonne valeur.
En théorie en tout cas. Peu être qu'un compilateur hight tec de chez Intel est capable de compiler de façon intelligente et de faire différemment, genre, par saut dans le code binaire...

Donc au final, une masse de "if else" imbriqué, et un swith case, c'est quasi pareil.

_________________
Topique pour le Projet Hello Mario en préparation.
Sorti du topique lorsque la première démo sera disponible.
Switch (compilation et perforamance) Projet13
Revenir en haut Aller en bas
edi9999
Utilisateur confirmé: Rang *****
edi9999


Messages : 2480
Localisation : France
Projet Actuel : theatre flashy

Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyJeu 17 Juil 2008 - 23:17

je penses que switch est quand meme plus rapide:

le if (variable=value)
va stocker 2 variables dans le petit processeur interne : le nom de la variable et sa valeur a tester
puis l'ordinateur va repondre soit oui 1 ou non 0

mais quand l'ordinateur execute un switch, il va une fois stocker le petit nom de la variable, et ensuite tester pour chaque valeur, et donc juste devoir restocker une petite valeur dans la memoire

donc en gros en temps de processeur ca donne 2n pour les ifs
et n+1 pour les switchs.

_________________
Mes tutos sur le site: -Tutoriel débutant- Tutoriel intermédiaire
Venez sur http://gameplay.c.la pour des tutos sur mon site.
Utilisez des hébérgeurs gratuits et sans temps d'attente!:
http://willhostforfood.com/
Revenir en haut Aller en bas
http://gameplay.c.la/
edi9999
Utilisateur confirmé: Rang *****
edi9999


Messages : 2480
Localisation : France
Projet Actuel : theatre flashy

Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyMer 23 Juil 2008 - 14:38

Juste pour montrer que j'avais raison:

http://edi9999.ifrance.com/cbna/if_exemple.gm6
http://edi9999.ifrance.com/cbna/case_exemple.gm6

chez moi le if tourne a 34 fps et la case a 60 fps, alors que c'est la meme structure.
J'avais plutot raison non ❓

_________________
Mes tutos sur le site: -Tutoriel débutant- Tutoriel intermédiaire
Venez sur http://gameplay.c.la pour des tutos sur mon site.
Utilisez des hébérgeurs gratuits et sans temps d'attente!:
http://willhostforfood.com/
Revenir en haut Aller en bas
http://gameplay.c.la/
Malax
Utilisateur confirmé: Rang **
Malax


Messages : 496
Localisation : Aix-en-Provence
Projet Actuel : Lemmings Struggle (abandonné)

Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyMer 23 Juil 2008 - 18:42

Le double a peu près, mais j'ai seulement testé avec les fps dans GM
Revenir en haut Aller en bas
edi9999
Utilisateur confirmé: Rang *****
edi9999


Messages : 2480
Localisation : France
Projet Actuel : theatre flashy

Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyMer 23 Juil 2008 - 19:25

Il y a pas d'autres facons de tester qu'avec les fps non ?

_________________
Mes tutos sur le site: -Tutoriel débutant- Tutoriel intermédiaire
Venez sur http://gameplay.c.la pour des tutos sur mon site.
Utilisez des hébérgeurs gratuits et sans temps d'attente!:
http://willhostforfood.com/
Revenir en haut Aller en bas
http://gameplay.c.la/
master47
Utilisateur confirmé: Rang *****
master47


Messages : 2368
Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio

Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyMer 23 Juil 2008 - 19:35

Bah si, avec la fonction current_time par exempe qui représente le nbre de milisecondes depuis le démarage de l'ordinateur.

Citation :

var time0, time1, tf0, tf1;
time0 = current_time ;

// To code pour tester les if

tf0 = current_time - time0 ;

time1 = current_time ;

// ton code pour tester les case ac switch

tf1 = current_time - time1;

if( tf0 > tf1)
{
show_message("Les Case de switch sont les plus rapides");
}
else
{
show_message("Les if sont les plus rapides");
}

_________________
Suivez la timeline ! The PacWars Timeline
C# .NET, Web & Sound Design.
---
Oldies: http://livegallery.lescigales.org/
Lawl :
Spoiler:
Revenir en haut Aller en bas
http://theperfectpattern.tumblr.com
edi9999
Utilisateur confirmé: Rang *****
edi9999


Messages : 2480
Localisation : France
Projet Actuel : theatre flashy

Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyMer 23 Juil 2008 - 19:50

Ah oui awesome , connaissais pas cette fonction p2

_________________
Mes tutos sur le site: -Tutoriel débutant- Tutoriel intermédiaire
Venez sur http://gameplay.c.la pour des tutos sur mon site.
Utilisez des hébérgeurs gratuits et sans temps d'attente!:
http://willhostforfood.com/
Revenir en haut Aller en bas
http://gameplay.c.la/
Topaze22
*Excellent utilisateur*
Topaze22


Messages : 6213
Localisation : Sur la Lune
Projet Actuel : Projet HELLO/TOPAZE22 Mario Bros World

Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyDim 27 Juil 2008 - 2:32

edi9999 a écrit:
Juste pour montrer que j'avais raison:

http://edi9999.ifrance.com/cbna/if_exemple.gm6
http://edi9999.ifrance.com/cbna/case_exemple.gm6

chez moi le if tourne a 34 fps et la case a 60 fps, alors que c'est la meme structure.
J'avais plutot raison non ❓

En faite, le point que l'on a zapper et qui détourne ce que j'ai dis précédemment de la vérité est le faite que le GML est un langage interprété et non compilé. Car à par cela, rien ne peut espliquer un tel écart. Mon raisonnement était valable pour le langage C ou C++ mais pas pour du GML interprété (sachez d'ailleurs qu'il sera sans doute bientot compilé et que les premiers béta ultra privé ont été délivrés par Yoyogames à quelques "élus")

_________________
Topique pour le Projet Hello Mario en préparation.
Sorti du topique lorsque la première démo sera disponible.
Switch (compilation et perforamance) Projet13
Revenir en haut Aller en bas
edi9999
Utilisateur confirmé: Rang *****
edi9999


Messages : 2480
Localisation : France
Projet Actuel : theatre flashy

Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyDim 27 Juil 2008 - 12:03

Je viens de tester en C, une boucle de 1 000 000 de case et une boucle de 1 000 000 de ifs prend autant de temps, c-a-d : 7.30 millisecondes

_________________
Mes tutos sur le site: -Tutoriel débutant- Tutoriel intermédiaire
Venez sur http://gameplay.c.la pour des tutos sur mon site.
Utilisez des hébérgeurs gratuits et sans temps d'attente!:
http://willhostforfood.com/
Revenir en haut Aller en bas
http://gameplay.c.la/
Rem_101
*Excellent utilisateur*
Rem_101


Messages : 4356
Localisation : chez votre marchand de journaux

Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) EmptyDim 27 Juil 2008 - 21:13

Cher internautes, vous pouvez donc continuer à programmer avec vos longues séries de IF ou votre petite liste de CASE Wink

_________________
"Nan... C'est rien le vieux... C'est le compte qui n'y était pas... Il en manquait un..."
Revenir en haut Aller en bas
Contenu sponsorisé





Switch (compilation et perforamance) Empty
MessageSujet: Re: Switch (compilation et perforamance)   Switch (compilation et perforamance) Empty

Revenir en haut Aller en bas
 
Switch (compilation et perforamance)
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» pensées de switch
» mouvement : if / switch ou tableau
» switch plein écran bug étrange..
» petit probleme avec switch
» ordre de compilation

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: