Optimisations et GFA

Re: Optimisations et GFA

Messagede leglod » Jeu 20 Nov 2008 09:03

A oui c'est vrais je suis bete, gauche droite :lol:
Avatar de l’utilisateur
leglod
 
Messages: 182
Inscription: Jeu 6 Nov 2008 22:33
Localisation: Montpellier (34) sud France

Re: Optimisations et GFA

Messagede shadow272 » Mar 23 Déc 2008 09:24

Suite aux conseils de notre ami RAJAH, j'ai testé les commandes ~GRAF_MKSTATE et MOUSE avec une boucle de 1000 contrôles affin de déterminer la plus rapide.

Voici le petit code:
Code: Tout sélectionner
CLS
PRINT "Sous interprèteur GFA"
PRINT
PRINT
PRINT
t%=TIMER
FOR i%=1 TO 1000
  ~GRAF_MKSTATE(mx%,my%,mk%,k%)
NEXT i%
t2%=TIMER-t%
PRINT "1000 appels … GRAPH_MKSTATE"
PRINT t2%;"/200èmes de seconde"
'
PRINT
PRINT
PRINT
PRINT
PRINT
t%=TIMER
FOR i%=1 TO 1000
  MOUSE mx%,my%,mk%
NEXT i%
t2%=TIMER-t%
PRINT "1000 appels … MOUSE"
PRINT t2%;"/200èmes de seconde"
'
~INP(2)


Résultat sous interpréteur
Steem_033.jpg


Compilé
Steem_034.jpg


Y a pas photo si on a besoin de vitesse :mrgreen:
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Un ATARI, le GFA c'est le bonheur
Avatar de l’utilisateur
shadow272
Administrateur du site
 
Messages: 211
Inscription: Mer 15 Oct 2008 21:40
Localisation: Hainaut, Belgique

Re: Optimisations et GFA

Messagede Rajah » Mer 24 Déc 2008 00:00

GRAF_MKSTATE : c'est la fonction GEM du TOS qu'on appelle : donc externe et constante : même temps d'accès en compilé qu'en interprêté.

MOUSE : c'est de la bidouille GFA de bas niveau : on ne passe par aucune couche d'abstraction, donc adieu la compatibilité. A vos risques zet périls.
Rajah
 

Re: Optimisations et GFA

Messagede tomchi » Mar 2 Juin 2009 18:57

Ok, c'est pas de l'optimisation mais bon, vu que le thread bouge pas depuis 5 mois et que cooper troll plus, je vais le faire à sa place :P

Si vous faites un prog pour STE avec des RC_COPY dedans et que vous voulez le mettre dans un dossier AUTO, qu'il se lance automatiquement sans passer par le bureau et les inits GEM, il faut activer le blitter car sinon, l'ordi va faire les RC_COPY en soft comme pour un ST

~XBIOS(64,L:1)

(quoi j'ai utilisé des RC_COPY dans r0x ? Et alors ??? :P )
Avatar de l’utilisateur
tomchi
Administrateur du site
 
Messages: 342
Inscription: Mer 15 Oct 2008 20:51

Re: Optimisations et GFA

Messagede shadow272 » Mar 2 Juin 2009 19:18

Excccccccccellente nouvelle :D

Merci pour l'info ;)
Un ATARI, le GFA c'est le bonheur
Avatar de l’utilisateur
shadow272
Administrateur du site
 
Messages: 211
Inscription: Mer 15 Oct 2008 21:40
Localisation: Hainaut, Belgique

Re: Optimisations et GFA

Messagede sporniket » Mer 3 Juin 2009 10:04

C'est bon à savoir ^^
----
Fonte Sporniket Nostalgie Sans v9.08
Sporniket

Busy coding... lib gfx−60% ; streams−34%
Avatar de l’utilisateur
sporniket
 
Messages: 112
Inscription: Dim 23 Nov 2008 23:00
Localisation: paris

Re: Optimisations et GFA

Messagede tomchi » Mer 3 Juin 2009 11:10

Bon en fait, c'est vraiment du flood : je viens de me rendre compte que leglod l'avait deja dit dans son thread sur le blitter :P
Avatar de l’utilisateur
tomchi
Administrateur du site
 
Messages: 342
Inscription: Mer 15 Oct 2008 20:51

Re: Optimisations et GFA

Messagede tomchi » Sam 21 Aoû 2010 08:29

Le code est plus rapide quand on utilise des mots que des octets ou longs pour les variables
par exemple:
INC variable&
est plus rapide que
INC variable%
et
INC variable|

Bon ok, c'est pas des gains de fous, et dans la plupart des progs, ça servirait à rien, mais je viens de faire une version GFA du parallax distorder de gunstick/ULM avec changement de palette à chaque ligne plus overscan gauche/droit , et là , pour la synchro du code, c'est plutôt utile.
Avatar de l’utilisateur
tomchi
Administrateur du site
 
Messages: 342
Inscription: Mer 15 Oct 2008 20:51

Re: Optimisations et GFA

Messagede tomchi » Lun 21 Fév 2011 13:08

7-x // 7 XOR x ==>si 0 <= x <= 7 et si x est entier le resultat est le même mais c'est plus rapide
15-x // 15 XOR x ==>si 0 <= x <= 15
31-x // 31 XOR x ==>si 0 <= x <= 31
==>valable aussi pour les valeurs 1, 3, 63, 127, 255, 511, 1023, 2047, ...

x MOD 8 // x AND 7 ==>si 0 <= x et si x est un entier, le resultat est le même mais c'est plus rapide
x MOD 16 // x AND 15 ==>si 0 <= x
x MOD 32 // x AND 31 ==>si 0 <= x
==>aussi valable pour les valeurs 2, 4, 64, 128, 256, 512, 1024, 2048, ...
Avatar de l’utilisateur
tomchi
Administrateur du site
 
Messages: 342
Inscription: Mer 15 Oct 2008 20:51

Re: Optimisations et GFA

Messagede hylst » Mer 25 Mai 2011 16:22

Bonne revue de ce qui me parait essentiel en effet.

1 - Pour les copies de blocs, préférez BITBLT si - 3 plans ou - en basse réso.

2 - hline + rapide que aline + rapide que line
bcp de fonctions linea sur st tournent + vite que leur équivalent vdi.
Certes, compilo gère en mot longs... et compatibilité réduite j'ai cru comprendre.

3 - Préférez card byte long au poke peek...

4 - Bien faire gaffe aux instructions du compilo également pour mieux contrôler / optimiser le code généré :

$%0 Variables are converted to floating point and then divided.
$%3 Always execute integer division as an integer division.
$M xxxx The program should only use xxxx bytes of ram.
$*& Longword multiplication with muls.
$*% Longword multiplication without muls.
$F% RETURN value of a FUCTION will be an integer.
$RC& RC_INTERSECT() parameters treated as 2 byte values.
$RC% RC_INTERSECT() parameters treated as 4 byte values.
$X name The routine name to be taken from a linked file.
$U Check for Control+Shift+Alternate, EVERY/AFTER once.
$U+ Check for Control+Shift+Alternate, EVERY/AFTER after each instruction.
$U- Disable checking of Control+Shift+Alternate, EVERY/AFTER.
$I+ Enable interrupt routines.
$I- Disable interrupt routines.
$S| Treat SELECT-CASE parameters as 1 byte values?
$S& Treat SELECT-CASE parameters as 2 byte values.
$S% Treat SELECT-CASE parameters as 4 byte values.
$S> Optimise SELECT-CASE for execution time.
$S< Optimise SELECT-CASE for program length.
$E$ ERROR messages displayed as text.
$E# ERROR messages displayed as numbers.
$B+ ERROR number instead of bombs.
$P> Do not optimize subroutines that have no parameters/LOCALs.
$P< Optimize subroutines that have no parameters/LOCALs.
$F> Switch ENDFUNC checking on.
$F< Switch ENDFUNC checking off.
$C+ Save registers A3 to A6 on stack
$C- Do not save registers A3 to A6 on stack
$N+ Enable FOR-NEXT range checking on.
$N- Disable FOR-NEXT range checking off.
$%6 Round integers up.

5 - Utilisez les dernières librairies de compilation mises à jour de Lonny Pursell (même si je n'ai pas réussi à compiler mes programmes depuis les quelques, certes peu d'essais que j'ai fait alors).

...
Let's visit my personal website http://hylst.t15.org !
hylst
 
Messages: 184
Inscription: Mer 27 Avr 2011 17:17
Localisation: France Strasbourg

PrécédentSuivante

Retourner vers Divers

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron