Voici un programme avant l'optimisation :
{2565166,2565166,2565166,2565166,2565166,2565166,1451,1546,
444,2565166,2565166,2565166,2565166,2565166->List 1
Et maintenant ce même programme après l'optimisation :
[u]Premier possibilité :[/u]
2565166->A
{A,A,A,A,A,A,1451,1546,444,A,A,A,A,A->List 1
[u]Deuxième possibilité :[/u]
2565166
{Ans,Ans,Ans,Ans,Ans,Ans,1451,1546,444,Ans,Ans,Ans,Ans,Ans->List 1
Remarque 1 : Dans ce cas les '}' sont inutiles
Remarque 2 : Ans est une variable qui contient la valeur du dernier résultat, ici Ans vaut 2565166
J'ai tout simplement stocké le nombre 2565166 dans la variable A ;). Une autre possibilité est d'utiliser la variable Ans qui permet d'optimisé encore mieux vos programmes
Autres exemples :
[u]Avant :[/u]
(Mat S[1,4]+AxMat S[1,4])xMat S[1,4]->E
[u]Après :[/u]
Mat S[1,4]->B
(B+AB)B->E
ou encore (avec Ans) :
Mat S[1,4]
(Ans+AxAns)Ans
Do
Getkey=31=>1->A
Getkey=41=>2->A
Getkey=51=>3->A
Getkey=61=>4->A
Getkey=71=>5->A
Getkey=32=>6->A
Getkey=42=>7->A
Getkey=52=>8->A
(89 octets)
devient
Do
Getkey
Ans=31=>1->A
Ans=41=>2->A
Ans=51=>3->A
Ans=61=>4->A
Ans=71=>5->A
Ans=32=>6->A
Ans=42=>7->A
Ans=52=>8->A
(67 octets)
Combien de variables existe-t-il ? Beaucoup de personnes pensent qu'il y en a 28 (Toutes les lettres de l'alphabet, r et [TETA] ), mais en réalité il y en a 37 (peut être même plus) :
Les variables supplémentaires sont a0, a1, a2, b0, b1, b2, c0, c1 et c2, on les trouve dans [VARS]+[F6]+[F2]+[2] pour les Graph 100 (+) ou dans [VARS]+[F6]+2x[F2] pour les autres calculatrices
Dans cette partie du cours on admettra ceci : une variable existe si elle ne vaut pas 0 et une variable n'existe pas si elle vaut 0. Exemple : soit une variable A, la variable A existe si A != 0 et elle n'existe pas si A=0
Voici un programme avant l'optimisation :
If A!=0
Then ...
IfEnd
If B=0
Then ...
IfEnd
Et maintenant ce même prog après l'optimisation :
If A
Then ...
IfEnd
If Not B
Then ...
IfEnd
La première ligne signifie ''Si A existe'' c'est-à-dire ''Si A !=0''
La quatrième ligne signifie ''Si B n'existe pas'' c'est-à- dire ''Si B = 0''
Syntaxe globale :
''<variable> = 0'' s'écrit aussi ''Not <variable>'' (optimisation de 1 octet, c'est déjà pas mal)
''<variable> != 0'' s'écrit aussi ''<variable>'' (optimisation de 2 octets)
On peut aussi appliquer cette méthode dans les boucles, exemple :
Do
...
LpWhile A=0 And B!=0
donne:
Do
...
LpWhile Not A And B (optimisation de 3 octets)
Citer : Posté le 30/03/2015 12:41 | #
Oi c'est ce que je dis si tu fais toutes les optis, le gain est déja assz conséquent, la technique seule ne suffit pas
Citer : Posté le 31/03/2015 09:04 | #
Avec le Locate, le Dips"◢" ne provoque pas de problème si on a enlevé le guillemet mais curieusement le ◢ est affiché en bout de ligne !
Citer : Posté le 25/04/2015 17:41 | #
Et c'est pas un octet gagné lorsqu'on enlève un ", mais 4.
Citer : Posté le 25/04/2015 18:24 | #
Absolument pas
Tu gagne 4 octets dans le cas où ton programme descend en dessous d'un multiple. Exemple en mémoire
Locate 1,1,"Hi // 2 + 7 octets = 9 octets, le programme en fait 12 en mémoire
Locate 1,1,"H // 2 + 6 octets = 8 octets, le programme en fait 8 en mémoire (gain apparent de 4 octets)
Mais en aucun cas enlever un « " » réduit de 4 octets la taille du programme !
Citer : Posté le 25/04/2015 19:25 | #
Je pense qu'on peut dire que 4 octets est la taille d'un cluster de la mémoire principale...
Citer : Posté le 25/04/2015 20:36 | #
Au temps pour moi, mais un byte = un octet ?
Citer : Posté le 25/04/2015 20:42 | #
Je crois qu'un byte=un octet mais un byte=huit bits
-Mon Fall Down
-Mon jeu de mains
-Mon starwars
-Mon dessinatout
-Mon niaiseux version 2.0
-Mon niaiseux version 3.0
-Inferno
-Mon super labyrinthe (en cours)
-Mon call of duty en 3D
-Casion (avec Az)
Citer : Posté le 25/04/2015 20:44 | #
Oui
1 Octet = 8 Bits
1 Octet = 1 Byte
1 Byte = 8 Bits
Tilde Invité
Citer : Posté le 15/04/2016 03:02 | #
Souvent, 1 Byte = 8 bits, mais Byte n'est pas le mot anglais équivalent d'Octet.
En anglais, octet se dit... octet.
Citer : Posté le 26/08/2019 07:20 | #
Getkey
LpWhile Not Ans
Only using one " (Double Quotes) can cause issues (fx-9680GII)
When using Labels/Goto
If 0
Then Text 1, 1, "Hi
IfEnd
Goto A
When it should loop infinitely
For me 'Not' is 2bytes
So replacing '=0' with 'Not' does nothing
Citer : Posté le 26/08/2019 09:05 | #
Getkey
LpWhile Not Ans
Won't you lose the key code stored in Ans in this case?
So replacing '=0' with 'Not' does nothing
Not in terms of program size, but parsing probably happens differently. In the end, a quick manual test of X=0 against Not X in a 1000-iteration loop suggests that Not x (3.0s) is much faster than X=0 (3.4s, remember the overhead of the loop).
Citer : Posté le 26/08/2019 09:13 | #
Will not you lose the key code stored in Ans in this case?
I just looked at the bottom GeKey's which didn't use Ans
Thank you for spotting it
X=0 against Not X in a 1000-iteration loop suggests that Not x (3.0s) is much faster than X=0
I just did a test with x=0 vs Not X
For 1 -> A To 4000
Not X
next
I guess it looks a bit better anyway
Citer : Posté le 26/08/2019 09:18 | #
Tried it again with your exact program and I consistently get 10% faster by using Not on my Graph 75+E. This may depend on the model...
Citer : Posté le 26/08/2019 09:27 | #
I have fx-9750GII
With the upgraded OS to fx-9860GII
OPTN F6 F6 F4 F3
For Not
Citer : Posté le 26/08/2019 09:35 | #
Yeah, that's the same function and almost the same model as well. I ought to mention I have OS 02.05, but this performance gain has been discussed for years now so it shouldn't be this specific.
I guess I'll leave it here for the records...
Citer : Posté le 26/08/2019 09:49 | #
I have OS 2.04.0201
and Im running on 1.2V recharagable battries
Citer : Posté le 26/08/2019 10:46 | #
Maybe you will share which method you use .
And as I said (can't remember the topic), the battries affects a little the performances, so maybe the difference is there.
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Citer : Posté le 26/08/2019 10:55 | #
Influencing performance is one thing, but doing so non-uniformly feels really way off to me...