Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » Benchmarks sur le Basic Casio
Zezombye En ligne Rédacteur Points: 1739 Défis: 13 Message

Benchmarks sur le Basic Casio

Posté le 22/08/2017 15:08

Dans ce topic, je publierai divers benchmarks afin d'optimiser le basic.
Tous les benchmarks sont à +/- 50 ms et sont réalisés sur l'émulateur OS 2.00.

Variables
1000 itérations de 1->var : var=1 pour mesurer la lecture et l'écriture.
A : 1367 ms
Z : 1369 ms
θ : 1399 ms
r : 1367 ms
a0 : 2084 ms
c2 : 2100 ms
List 1[1] : 4915 ms
List 26[1] : 5032 ms
List 1[999] : 5017 ms
Mat A[1,1] : 2950 ms
Mat A[10,10] : 2948 ms

On remarque que les matrices sont plus rapides que les listes, et qu'il faut réserver les variables non-alphanumériques à un usage qui en convient (par exemple, la sélection du menu ou le niveau actuel). Le rang des listes/matrices ne fait aucune différence.

moins binaire / moins unaire
Les 2 sont égaux.

Chaine de conditions
1000 itérations avec différentes méthodes pour A=1 ou A=2 ou A=3 ou A=4, avec A=3.
A=1 Or A=2 Or A=3 Or A=4 : 2867 ms
{1,2,3,4}=A : Max(List Ans) : 6451 ms
Sum ({1,2,3,4}=A) : 2949 ms
(A=1) + (A=2) + (A=3) + (A=4) : 3151 ms

Utiliser les conditions est donc la méthode la plus rapide. Mes tests avec And donnent des résultats similaires.

Opérateur Not
Not 1 : 5018 ms
1=0 : 5546 ms
Le Not est plus rapide.

Strings
200 itérations de Exp->Str(<str>, Str 1) : StrRotate(Str 1, 1) : Str 1 -> <str>.

Strings normaux : 267ms
Strings graphiques (Xt, Yt) : 5467 ms
Strings fonctions (fn1 ou f1) : 1133 ms
Strings récurrence ([abc]n/n+1/n+2) : 3133 ms

Si vous avez d'autres idées de benchmarks à faire dites le dans les commentaires (ou sur la shout, ça évite le spam).


Lephenixnoir Hors ligne Administrateur Points: 20793 Défis: 143 Message

Citer : Posté le 22/08/2017 16:07 | #


Zezombye a écrit :
Tous les benchmarks sont à +/- 50 ms [...]
A : 1367 ms

Tu es fort pour donner autant de chiffres alors que t'es à ±50 ms ! Personnellement, je me contenterais de « A : 1.35 s » pour être fidèle à la précision de tes mesures.

Tu peux donner les chiffres pour les deux moins, histoire qu'on constate nous-même. Et puis ça peut aider pour comparer avec d'autres opérateurs.

J'imagine que pour les strings normaux tu n'as pas exécuté Exp→Str() ?
Zezombye En ligne Rédacteur Points: 1739 Défis: 13 Message

Citer : Posté le 22/08/2017 16:16 | #


Lephé, tu me donnes des flashbacks des cours de physique è_é

Pour les 2 moins j'ai 4317/4351 ms (binaire/unaire) puis 4332/4337. Ils sont effectivement égaux. Par contre je ne sais plus combien d'itérations (et pour la comparaison avec d'autres opérateurs, on devrait comparer -1 et +1 ce qui est inutile car ils ne servent pas à faire la même chose).

Pour les strings normaux je n'ai pas exécuté Exp->Str (ce qui explique la différence avec tous les autres strings).
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Ninestars Hors ligne Membre Points: 2384 Défis: 22 Message

Citer : Posté le 22/08/2017 17:01 | #


J'adore !
Très bonne initiative ! Un test On-calc serait préférable quand même.
Vérifier les différences en temps d'accès aux List, Math, variables alphanumériques ou pas est une très bonne idée. Essaye en écriture maintenant
J'aurai d'autres test à te proposer
Zezombye En ligne Rédacteur Points: 1739 Défis: 13 Message

Citer : Posté le 22/08/2017 17:07 | #


J'ai vérifié en lecture et en écriture, après il serait intéressant de vérifier séparément mais je doute qu'il y aurait une différence.
Le test on-calc serait préférable mais pour mesurer efficacement il faudrait un addin qui agit dans le même style que PRGM2 : il mesure le début/fin non pas en regardant l'écran mais en regardant la valeur d'une variable, ce qui serait effectivement plus précis.

Je coderai peut être ça un jour, mais ça me paraît inutile d'avoir une si grande précision : si 2 méthodes différentes sont distantes de 50 ms, ça ne fera absolument aucune incidence sur le gameplay, et donc elles devraient être considérées comme égales.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Ninestars Hors ligne Membre Points: 2384 Défis: 22 Message

Citer : Posté le 22/08/2017 17:13 | #


Tu as toi vu que l'émulateur est plus rapide que la calto il y a pas longtemps je te rappelle
Fais un test qui boucle 10000 fois, tu mesures à la montre on calc (ou avec une vidéo tu mesures le temps en regardant la timeline) et le même test sur émulateur pour voir si les résultats sont proches. Parce que si l'émulateur de réagit pas comme la calto ton travail ne servira pas
Lephenixnoir Hors ligne Administrateur Points: 20793 Défis: 143 Message

Citer : Posté le 22/08/2017 17:18 | #


Ou alors tu utilises un add-in pour faire la mesure à ta place, et tu joues de l'e-strip. Il y a du potentiel pour descendre tes mesures à une précision bien inférieure à la milliseconde, même si ce serait déjà pas mal que tu n'aies pas à arrondir tous tes beaux travaux actuels.
Zezombye En ligne Rédacteur Points: 1739 Défis: 13 Message

Citer : Posté le 22/08/2017 17:19 | #


L'émulateur est plus rapide mais rien ne dit que certaines fonctions sont plus rapides que d'autres (et je ne vois pas pourquoi ce serait le cas). L'augmentation de vitesse n'influe pas sur les rapports des durées d'exécution, les variables alphanumériques seront toujours plus rapides que les variables de récurrence, etc.

Puis la montre c'est pas vraiment un truc super précis

Mais bon, si besoin je coderai demain cet addin (il me parait pas très dur à coder) pour tester sur les caltos réelles.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Ninestars Hors ligne Membre Points: 2384 Défis: 22 Message

Citer : Posté le 22/08/2017 17:29 | #


Tu t'appuies d'une conviction personnelle. Rien ne t'assure que les rapports de vitesse soient les mêmes on-calc. Et encore moins qu'ils soient suffisamment pertinents, du moins autant que sur émulateur

Sinon, la mesure à la montre est très précise à partir du moment où la mesure dure longtemps. Si tu te trompes d'une seconde sur une mesure d'une minute, ça te fait que 1.6% d'erreur... C'est négligeable.
Et puis une montre, ça peut être le chrono de ton téléphone voyons :P

Ajouté le 22/08/2017 à 17:33 :
Une histoire que j'ai vécu : le PPE de première, des gens de ma classes ont fabriqué un anémomètre. Ils sont passé devant le jury, ils ont bien montré que quand le vent souffle fort, la vitesse mesuré augmente. et inversement.
Mais un juré leur a demandé si à partir de leur mesure, ils pouvaient donner la valeur en m/s de la vitesse du vent...
Ils sont resté bouche cousue...
C'est un peu ce qu'il risque de t'arriver là

Ajouté le 22/08/2017 à 17:35 :
Je ne connais pas nonplus ton protocole, mais un benchmark sur ordinateur se répète, et on garde la moyenne
Totoyo Hors ligne Membre d'honneur Points: 16034 Défis: 102 Message
Kikoodx Hors ligne Labélisateur Points: 2726 Défis: 11 Message

Citer : Posté le 06/12/2019 17:19 | #


Salut !
J'ai fait un benchmark rapide sur ma calculatrice sur la vitesse d'assignation et incrémentation de A~Z contre Ans.
Le résultat est assez étonnant.

// For vide ~3 secondes
For 1→A To 5000
Next


// Isz B ~5.5 secondes (2.5 secondes)
1→B
For 1→A To 5000
Isz B
Next


// Ans+1 ~9.5 secondes (4.5 secondes)
1
For 1→A To 5000
Ans+1
Next


Ans+1 est deux fois plus lent que Isz.

// 1→B ~7.5 secondes
For 1→A To 5000
1→B
Next


// 1 (assignation à Ans) ~7.5 secondes
For 1→A To 5000
1
Next


1 et 1→B s'exécutent à la même vitesse.


C'est ce second résultat qui m'a le plus étonné, je m'attendais à ce que l'interpréteur soit plus rapide à l'assignation de Ans que B. C'est une information qui peut-être précieuse à l'optimisation de certains programmes
Protip
Ne me remerciez pas
Lephenixnoir Hors ligne Administrateur Points: 20793 Défis: 143 Message

Citer : Posté le 06/12/2019 17:22 | #


Intéressant ! Merci pour l'information. Ans coûte cher, finalement...
Redcmd Hors ligne Membre Points: 306 Défis: 5 Message

Citer : Posté le 07/12/2019 05:57 | #


Test the speed of the draw comands
PlotOn vs PixelOn and also when the pixel is off screen PlotOff 999999, 99999999

Speed of different loops
Lbl, For, While etc

Test both the 'pass through' speed (when the loop is set to 1) and the actual loop speed
For 1->X To 1 : Next and For 1->X To 1000 : Next

For geting key inputs I found this to be really fast (pass through speed is needed more than just the loop speed)
60 -> N
Lbl 0
GetKey -> K
Dsz N
Not K⇒Goto 0


using multiple ⇒ rather than a single If statement

Isz A : Isz A : Isz A
//`Is faster than
A+3 -> A

RedCMD#4299 - Discord
Mandelbrot SNKEmini Minesweeper Sudoku

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 45 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd