| Comparer les performances de 2 scripts gml | |
|
|
Auteur | Message |
---|
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Comparer les performances de 2 scripts gml Dim 30 Oct 2011 - 16:30 | |
| Voici une méthode pour comparer les performances de 2 bouts de code. Utile quand on doit faire un bout de code optimisé (par exemple dans une double loop for) - Code:
-
ts = current_time
for(i=0; i<500000; i+=1) { <code1> }
t1 = current_time - ts ts = current_time
for(i=0; i<500000; i+=1) { <code2> } t2 = current_time - ts
show_error("t1 = " + string(t1) + " - t2 = " + string(t2), 0) Exemple : Comparaison de : - Code:
-
if(x<0) x=0 et - Code:
-
x = max(x, 0) - Code:
-
ts = current_time
for(i=0; i<500000; i+=1) if(x<0) x=0
t1 = current_time - ts ts = current_time
for(i=0; i<500000; i+=1) x = max(x, 0) t2 = current_time - ts
show_error("t1 = " + string(t1) + " - t2 = " + string(t2), 0) Et on remarque qu'utiliser un if est 2x plus rapide. |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: Comparer les performances de 2 scripts gml Dim 30 Oct 2011 - 20:26 | |
| - Code:
-
place_meeting(mouse_x,mouse_y,self); est plus rapide que - Code:
-
position_meeting(mouse_x,mouse_y,self); |
|
| |
Qual Utilisateur confirmé: Rang ****
Messages : 1450 Projet Actuel : Tower Defence
| Sujet: Re: Comparer les performances de 2 scripts gml Dim 30 Oct 2011 - 23:25 | |
| - Code:
-
if abla = true && mouse_check_button_pressed ( mb_left ) abla = false
if abla =false && mouse_check_button_pressed ( mb_left ) abla = true
est plus lent que : - Citation :
- if mouse_check_button_pressed(mb_left)
abla = !abla Qui c'est le boss ? |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Comparer les performances de 2 scripts gml Dim 30 Oct 2011 - 23:32 | |
| Petit joueur - Code:
-
abla = abla ^ mouse_check_button_pressed(mb_left) voir même - Code:
-
abla ^= mouse_check_button_pressed(mb_left) |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: Comparer les performances de 2 scripts gml Ven 4 Nov 2011 - 10:40 | |
| t1: - Code:
-
execute_string(""); t2: - Code:
-
object_event_add(object_index,ev_draw,0,""); object_event_clear(object_index,ev_draw,0); - Citation :
- t1 = 1812 - t2 = 15641
t1 = 1797 - t2 = 15625 t1 = 1813 - t2 = 15578 |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Comparer les performances de 2 scripts gml Ven 4 Nov 2011 - 10:42 | |
| De toute façon ces fonctions cay le mal :p |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: Comparer les performances de 2 scripts gml Ven 4 Nov 2011 - 11:06 | |
| Ouai mais j'en ai besoin sauf si tu as une alternative pour attribuer des instructions à une instance. C'est vrais que le temps de réponse fait réfléchir :s |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Comparer les performances de 2 scripts gml Ven 4 Nov 2011 - 12:04 | |
| En principe on peut toujours contourner. Pis moi si je bannis c'est fonctions c'est parce que c'est utilisable only GM. (et oui aussi parce que c'est un peu mou)
Perso la plupart du temps j'utilise un switch case pour remplacer, mais après ça dépend du contexte :p |
|
| |
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: Comparer les performances de 2 scripts gml Ven 4 Nov 2011 - 14:55 | |
| et puis execute_string c'est une focntion d'un interpreteur, l'alternative la plus simpe c'est : txt="draw_text -x 10 -y 10 -s 'texte a ecrire' " if string_find_string(txt,"draw_text")//<- ché pa si el exits { //tout se base la dessus } |
|
| |
Morwenn Très bonne participation
Messages : 151 Projet Actuel : Icare
| Sujet: Re: Comparer les performances de 2 scripts gml Ven 4 Nov 2011 - 15:38 | |
| En général, même plutôt que d'utiliser des switch, dans pas mal de cas, on peut se débrouiller avec des tableaux et des constantes afin d'avoir malgré tout un code lisible. Mais bon, je ne sais pas vraiment si les tableaux GM sont rapides ou non (je dirais non ? ) |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: Comparer les performances de 2 scripts gml Sam 28 Avr 2012 - 11:45 | |
| J'ai encore du mal à comprendre pourquoi mais voilà: - Code:
-
truc= global.machin; truc2= global.machin2; truc3= global.machin3; truc4= global.machin4; truc5= global.machin5; est largement plus long que - Code:
-
truc= ds_map_find_value(global.machin,'1'); truc2= ds_map_find_value(global.machin,'2'); truc3= ds_map_find_value(global.machin,'3'); truc4= ds_map_find_value(global.machin,'4'); truc5= ds_map_find_value(global.machin,'5'); |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Comparer les performances de 2 scripts gml Sam 28 Avr 2012 - 12:49 | |
| C'est vrai que la, c'est pas du tout logique x) Plus long de combien a peu près en rapport ? |
|
| |
SPLN Utilisateur confirmé: Rang ***
Messages : 588 Localisation : Sur son ordinateur *vous vois* arrêtez de me regarder comme ça Projet Actuel : En quête de projet(s)!
Mes projets:
SP Lecteur Multimedia (Stand by)
S-Portable Graphics (demo1.8 is out! demo2.0 is planned)
SSB RPG (Stand by)
| Sujet: Re: Comparer les performances de 2 scripts gml Sam 28 Avr 2012 - 15:58 | |
| - Citation :
- t1 = 1514 / t2 = 5865
Ce n'est pas plutôt l'inverse? - Spoiler:
global.machin = ds_map_create() global.machin1 = 0 global.machin2 = 0 global.machin3 = 0 global.machin4 = 0 global.machin5 = 0 ds_map_add(global.machin,"1",0) ds_map_add(global.machin,"2",0) ds_map_add(global.machin,"3",0) ds_map_add(global.machin,"4",0) ds_map_add(global.machin,"5",0)
ts = current_time
for(i=0; i<500000; i+=1) { //<code1> truc1= global.machin1; truc2= global.machin2; truc3= global.machin3; truc4= global.machin4; truc5= global.machin5; }
t1 = current_time - ts
ts = current_time for(i=0; i<500000; i+=1) { //<code2> truc1= ds_map_find_value(global.machin,'1'); truc2= ds_map_find_value(global.machin,'2'); truc3= ds_map_find_value(global.machin,'3'); truc4= ds_map_find_value(global.machin,'4'); truc5= ds_map_find_value(global.machin,'5'); } t2 = current_time - ts
show_error("t1 = " + string(t1) + " / t2 = " + string(t2), 0)
A moins que ça soit moi qui n'est strictement rien compris :/ Ça fait quand même une énorme différence, en effet. |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Comparer les performances de 2 scripts gml Sam 28 Avr 2012 - 16:54 | |
| Ouai la comme ça ça me parait quand même plus logique x)
|
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: Comparer les performances de 2 scripts gml Sam 28 Avr 2012 - 18:10 | |
| Chez moi avec 9 attributions dextern call j'ai le résultat inverse. Je reteste ça quant je rentre. |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: Comparer les performances de 2 scripts gml Dim 29 Avr 2012 - 11:31 | |
| Je confirme. - Code:
-
globalvar ___dll; ___dll=ds_map_create();
ds_map_add(___dll,'cpkOpen',external_define('cpk.dll',"OpenResource",dll_stdcall,ty_real,2,ty_string,ty_string)); external_call(ds_map_find_value(___dll,'cpkOpen'),argument0,argument1); est plus rapide que : - Code:
-
global.cpkOpen=external_define('cpk.dll',"OpenResource",dll_stdcall,ty_real,2,ty_string,ty_string); external_call(global.cpkOpen,argument0,argument1); Sur 9 déclarations et 10 appels j'ai 50ms de différence. |
|
| |
Contenu sponsorisé
| Sujet: Re: Comparer les performances de 2 scripts gml | |
| |
|
| |
| Comparer les performances de 2 scripts gml | |
|