Forum Graph100

Forum Graph100

Vous n'êtes pas identifié.

Annonce

Bonjour et bienvenue sur le nouveau Forum Graph100 !
L'intégralité des données a été transférée sur un forum PunBB et tout les comptes sont fonctionnels avec le même nom d'utilisateur et mot de passe.
Un wiki est aussi disponible avec le même compte ! N'oubliez pas de remettre votre avatar, bon surf !
Pour plus d'informations, consultez ce post.

#1 09 Oct 2003 02:15:53

Swifter
Programmeur Graph100
Lieu: Niort (79)
Date d'inscription: 06 Aug 2002
Messages: 980
Site web

A tous les spécialistes de l'optimisation

Voila j'ai commencé à optimisé Chess, qui en a grandement besoin...
Mais j'aimerais quelques conseils pour pouvoir optimiser au maximum...
merci...


Swifter, avec un T, n'attrapes pas la poussière mais toutes les remarques débiles :mrgreen:
              ** Swifter68@hotmail.com **

Hors ligne

 

#2 09 Oct 2003 07:24:16

mastermage
Magicien G100
Lieu: Charleville-Mézières,Compiègne
Date d'inscription: 31 Jan 2002
Messages: 1008

Re: A tous les spécialistes de l'optimisation

euh lol ben... utilise des variables "register" dans tes fonctions
par exemple register int i;
en fiat la variable le plus utilisée sera conservée dans un registre.

et puis... essaye de remplacer les multiplications par des décalages
par exemple: truc = i * 320;
équivaut à: truc = i << 6 + i << 8;

sinon tu peux toujours me demander pour l'ASM tu me demandes de convertir un fct C en asm (gain de vitesse garanti)

mais bon pourtant tu dois savoir optimiser non ??

Hors ligne

 

#3 09 Oct 2003 07:47:29

dada66
Membre Communauté Graph100
Lieu: Perpignan
Date d'inscription: 09 Oct 2002
Messages: 1033

Re: A tous les spécialistes de l'optimisation

ca reste quand meme un peu vague ce que tu dis swifter.
Dans l'optimisation il y  a:
-Enlever du code inutile
-Essayer de convertir du c en asm (moins vrai sur les nouveau compilo)
Ensuite deux solutions sont possibles essayer d'optimiser la vitesse ou la place prise par le code ou encore optimiser l'évolution du logiciel (la programmation object avec C++ par exemple)
-Si tu décides d'optimiser la vitesse il se peut que ton code devienne plus gros, à l'inverse optimiser la place mémoire peut rendre ton code moins performant.
Dans GComm g mélangé les deux, ainsi l'affichage et la gestion des menus bénéficient plutot d'un opti memoire tandis que l'écriture sur la flash, menu, envoi/recpetion sont optimisés en rapidité.

Mais d'abord dans un premier temps je te conseil de ne pas utiliser des méthodes de dos.h ou autre lib de C si tu en as pas vraiment besoin ou alors que tu px facilement recoder. Ceci peut t'apporter un gain de memoire et de vitesse.


Flash100, F100Console, GComm, ... : http://flash100.free.fr/xoops

Hors ligne

 

#4 09 Oct 2003 09:46:44

Azor
Le Coté Obscur De La G100
Lieu: glop glop!
Date d'inscription: 04 May 2002
Messages: 5479
Site web

Re: A tous les spécialistes de l'optimisation

si le compilo à ses options par défaut, pas besoin de mettre register, c'est automatique wink

l' optimisation:
-un backup au cas ou!!
-chess=jeu d' echec=pas besoin d' une super opti de vitesse mais de mémoire!
-mémoire: conversion en asm évidemment(avantage: gain de vitesse aussi )
-suppresion d' argument(technique qui up la vitesse mais down aussi la mémoire) exemple dans mon prog je vois ceci:
drawsprite(X,Y,lesprite,SEG1);
...
drawsprite(X,Y,unautresprite,SEG1);
...
drawsprite(X,Y,ultimesprite,SEG1);

en gros, virer SEG1 car c'est totalement inutile, et c'est induit souvent par les librairies!

Sinon sur BTOUR, j' ai ceci comme appel souvent:

drawsprite64(ptrproj->x,ptrproj->y,Xsprite);

ptrproj est la structure pour les projectiles.

x et y de cette structure sont multiplié par 64, et sont déssiné en fonction de 2 variables xecran et yecran qui determine le scrolling!

si j' avais appelé directement la routine drawsprite:

drawsprite(ptrproj->x>>6-xecran,ptrproj->y>>6-yecran,Xsprite);

bah plus de mémoire utilisée lol, et pour la vitesse ça doit augmenter sensiblement!

Pour optimiser, il faut ruser, et passer par des détours des fois  wink

Autre méthode: au lieu de mettre ceci par exemple:

drawstring(10,16,"Salut");
drawstring(10,22,"Ca va?");

faites plutot ceci si vous en avez une tonne:

struct textt
{
char x;
char y;
char *text;
} atexttab;

struct atexttab textetab[]=
{
10,16,"Salut",
10,22,"Ca va?",
};

void drawstring2(unsigned char letexte)
{
drawstring(textetab[letexte].x,textetab[letexte].y,textetab[letexte].texte);
}

Avantages:
°Quand ya une tonne de texte c'est super efficace!!
°Traduction simple!!
°ptet d' autres
Défauts:
°Dur de changer la position du texte!
°On voit pas forcément le texte ciblé dans drawstring(0); par exemple ( a moins de mettre des #define TEXT_SALUT 0 par exemple)
°ptet d' autres

l' atout c'est d' avoir de l'imagination  wink


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#5 09 Oct 2003 11:27:40

Swifter
Programmeur Graph100
Lieu: Niort (79)
Date d'inscription: 06 Aug 2002
Messages: 980
Site web

Re: A tous les spécialistes de l'optimisation

lol...j'avais oublier de préciser en effet que c'était pour une optimisation de code car la taille de l'exe augmente très vite...
sinon oui je sais quoi optimiser (tous ces affichages de graphismes)...mais en fait j'ai posté ce sujet pour voir s'il n'y a pas des détails ou méthode d'opti que je n'oublie pas...
je risque d'adopter une methode x-thunder...lol
merci pour tous les conseils


Swifter, avec un T, n'attrapes pas la poussière mais toutes les remarques débiles :mrgreen:
              ** Swifter68@hotmail.com **

Hors ligne

 

#6 09 Oct 2003 13:31:30

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: A tous les spécialistes de l'optimisation

Essaie peut-etre de rassembler des fonctions similaires en une seule... Par exemple pour activer/desactiver le mode DB, et regler le contraste en meme temps, moi je fais ca:

Code:

void modevideo(bool on)
{
    static u_char cont_init=get_cont();        // contraste initial

asm {
    cmp on,false
    je mode_off

    mov al,0xdb          // active le mode DB
    mov dl,18            // contraste a 18
    jmp mode_set

} mode_off: asm {

    mov al,0xc3        // restaure le mode C3
    mov dl,cont_init    // remet le contraste initial

} mode_set: 
    
    asm out 0x2,al;            
    contrast(_DL);
}

Comme ca (X-th sera content wink) le contraste initial est automatiquement préservé, et on doit aps garder de variable globale pour l'enregistrer etc...

pour activer le mode, on passe true a la foncx, et pour desactiver on renvoie false (bien sur wink)


Pensez à surveiller mes releases wink

Hors ligne

 

#7 09 Oct 2003 13:44:46

C@siomax
Programmeur Graph100
Lieu: Grenoble, au QG de fmw-product
Date d'inscription: 03 Feb 2002
Messages: 3042
Site web

Re: A tous les spécialistes de l'optimisation

moi jte dis pour bien optimiser bah fo travailler avec des structures (voire classes smile) et l'optimisation est super simple !!


:mrd: :mrd:
.·´¯`·.¸.-> Casiomax <-·´¯`·.¸.·

Statut: indéfini

Hors ligne

 

#8 09 Oct 2003 14:03:30

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: A tous les spécialistes de l'optimisation

Oui, c clair que la prog orientée objet est qd meme bien puissante pour écrire de bons programmes...
(en fait honnetement si on me demandait de faire un Chess sans classes et sans structures, je crois que j'aurais du mal  :? )


Pensez à surveiller mes releases wink

Hors ligne

 

#9 09 Oct 2003 14:23:25

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: A tous les spécialistes de l'optimisation

Au fait c'est un probleme de taille de l'exe ou de taille totale? parce que si c parce que tu as peur d'avoir un exe trop gros, essaie de mettre le plus de données (les sprites surtout) dans des fichiers externes, et tu recharges ces fichiers dans la mémoire au début du jeu (en memzone de préférence smile)

Aussi, évite de coder tes sprites sur 3 couches (masque + couche avant + couche arriere), on peut tres bien les compacter en 2 couches, le gain de place est assez important et l'affichage est même un peu plus rapide! wink


Pensez à surveiller mes releases wink

Hors ligne

 

#10 09 Oct 2003 14:28:13

Huji
tekistekeus
Lieu: Paris
Date d'inscription: 30 Jan 2002
Messages: 1533
Site web

Re: A tous les spécialistes de l'optimisation

pi tu fai un intalle ... ?


Huji http://casiounivers.free.fr/Smileys_Or/smokin.gif
No noise, Nothing but my dreams...

Hors ligne

 

#11 09 Oct 2003 15:06:08

Azor
Le Coté Obscur De La G100
Lieu: glop glop!
Date d'inscription: 04 May 2002
Messages: 5479
Site web

Re: A tous les spécialistes de l'optimisation

non, fichiers externe  :mrgreen:

Julien si tu veux des méthodes je peut t' en donner lol

Le C++ prend par lui meme un peu plus de place que le C...

dans le C les structures sont suffisantes pour faire des bons jeux :mrgreen:

a vouais swifter: tu me demandais pourquoi je faisait mes menus en dernier: t' a la réponse devant toi  :mrgreen:


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#12 09 Oct 2003 15:12:35

Huji
tekistekeus
Lieu: Paris
Date d'inscription: 30 Jan 2002
Messages: 1533
Site web

Re: A tous les spécialistes de l'optimisation

lol fe kom patrickd : tout en asm erf  :ptdr:


Huji http://casiounivers.free.fr/Smileys_Or/smokin.gif
No noise, Nothing but my dreams...

Hors ligne

 

#13 09 Oct 2003 15:23:52

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: A tous les spécialistes de l'optimisation

Julien si tu veux des méthodes je peut t' en donner lol

mes propres méthodes me suffisent jusque ici  :P


Pensez à surveiller mes releases wink

Hors ligne

 

#14 10 Oct 2003 11:29:27

Swifter
Programmeur Graph100
Lieu: Niort (79)
Date d'inscription: 06 Aug 2002
Messages: 980
Site web

Re: A tous les spécialistes de l'optimisation

lol...d'ailleurs je risque de passer Chess en c++...
car je pense que pour l'IA j'aurai besoin des listes liées...remarque si je fais deux exe seul un exe aura besoin d'etre en c++...
sinon pour le stockage des divers graphismes j'avais pensé le faire en dernier recours, si l'optimisation ne suffit pas...


Swifter, avec un T, n'attrapes pas la poussière mais toutes les remarques débiles :mrgreen:
              ** Swifter68@hotmail.com **

Hors ligne

 

#15 10 Oct 2003 14:32:50

C@siomax
Programmeur Graph100
Lieu: Grenoble, au QG de fmw-product
Date d'inscription: 03 Feb 2002
Messages: 3042
Site web

Re: A tous les spécialistes de l'optimisation

mais malheureux, c'est ski faut faire en 1er !!  yikes  yikes


:mrd: :mrd:
.·´¯`·.¸.-> Casiomax <-·´¯`·.¸.·

Statut: indéfini

Hors ligne

 

#16 10 Oct 2003 14:38:46

Huji
tekistekeus
Lieu: Paris
Date d'inscription: 30 Jan 2002
Messages: 1533
Site web

Re: A tous les spécialistes de l'optimisation

erf ! t debile ou koi ?  :ptdr:


Huji http://casiounivers.free.fr/Smileys_Or/smokin.gif
No noise, Nothing but my dreams...

Hors ligne

 

#17 11 Oct 2003 03:04:39

Swifter
Programmeur Graph100
Lieu: Niort (79)
Date d'inscription: 06 Aug 2002
Messages: 980
Site web

Re: A tous les spécialistes de l'optimisation

bin en fait comme g fais les graphismes de chess en premier il y a plus d'un an, je ne les ai pas stockés comme ca...maintenant j'ai la flemmme et ce sera uniquement en dernier recours...
(bon arrete de te foutre de ma gueule hujikol)


Swifter, avec un T, n'attrapes pas la poussière mais toutes les remarques débiles :mrgreen:
              ** Swifter68@hotmail.com **

Hors ligne

 

#18 11 Oct 2003 04:20:22

Azor
Le Coté Obscur De La G100
Lieu: glop glop!
Date d'inscription: 04 May 2002
Messages: 5479
Site web

Re: A tous les spécialistes de l'optimisation

non il se foutais de la gueule de casiomax je crois!!

dsl julien, c'est un lapsus je voulait dire swifter  :mrgreen: ;


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#19 11 Oct 2003 04:58:54

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: A tous les spécialistes de l'optimisation

bin en fait comme g fais les graphismes de chess en premier il y a plus d'un an, je ne les ai pas stockés comme ca...maintenant j'ai la flemmme et ce sera uniquement en dernier recours...

J'ai fait un Sprite Maker pour sonic, qui convertit tt seul les images bmp en sprites de dimension quelconque, il suffit de glisser le ou les bmp vers le prog et de faire un copier-coller des tab créés  big_smile
Seulement comme je l'ai déjà dit
- c'est ma méthode personnelle de compression, y'en a d'autres
- y'a que ma fonction drawsprite() qui sait les lire!
Tout ça sera dans les sources de sonic, tu pourras reprendre ça si ca t'intéresse...

... A moins de te faire toi-meme un sprite maker pour le mode de compression que tu veux, c plus marrant de se créer un prog comme ca que de passer son temps à convertir des images à la main non? wink


Pensez à surveiller mes releases wink

Hors ligne

 

#20 11 Oct 2003 07:19:31

C@siomax
Programmeur Graph100
Lieu: Grenoble, au QG de fmw-product
Date d'inscription: 03 Feb 2002
Messages: 3042
Site web

Re: A tous les spécialistes de l'optimisation

heu hujikol tu c fo bien lire le post de swifter pr cprendre le mien ...


:mrd: :mrd:
.·´¯`·.¸.-> Casiomax <-·´¯`·.¸.·

Statut: indéfini

Hors ligne

 

#21 12 Oct 2003 11:43:21

Huji
tekistekeus
Lieu: Paris
Date d'inscription: 30 Jan 2002
Messages: 1533
Site web

Re: A tous les spécialistes de l'optimisation

raaaaaah c bon je rigolais alalalala vs etes susceptible parfois !


Huji http://casiounivers.free.fr/Smileys_Or/smokin.gif
No noise, Nothing but my dreams...

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr