30

merci c sympa. Fo dire que je connais pas encore très bien toutes les possibilités du C, et que j'ai fait une optimisation minimum, jt + occupé à ajouter des trucs, mai bon, le prog fait "que" 10ko, et il est suffisemment rapide à mon gout, donc l'optimiser ne sera qu'une façon pour moi de progresser.
Dans ces cas là ce serait pe mieux d'attendre tes conseils avant d'ajouter de nouvelles features.
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

31

Voici quelques "grossiertés" que j'ai vu dans la source de Partoche.
En permier je recopie le code original, que je fais suivre de ma correction. Le gain en vitesse est plus ou moins important suivant les cas (parfois pas du tout car TIGCC optimise certaines choses simples) :

  for (x=15; x<76; x=x+30)
    for (t=0; t<17; t=t+4)
      DrawLine (0, x+t,160, x+t,A_NORMAL);


  for (x=15; x<76; x+=30)
    for (t=x; t<x+17; t+=4)
      DrawLine(0, t,160, t,A_NORMAL);





  sprintf (&aff[0], "%d", mat[0][0]);
  sprintf (&aff[4], "%d", mat[0][1]);


  sprintf (aff, "%d", *mat);
  sprintf (aff+4, "%d", *(mat+1));





  test=test/mat[0][1];


  test/= *(mat+1);





  if (a>0)
  {
    ...
  }
  if (a<=0)
  {
    ...
  }


  if (a>0)
  {
    ...
  } else
  {
    ...
  }





  if (key==263) ...;
  if (key==338 && pa!=0)
  {
    ...
  }
  if (key==344 && pa!=npa)
  {
    ...
  }
  if (key==268)
  {
    ...
  }


  if      (key==263) ...;
  else if (key==338 && pa!=0)
  {
    ...
  }
  else if (key==344 && pa!=npa)
  {
    ...
  }
  else if (key==268)
  {
    ...
  }





  if (nvnote[1]!=3 || nvnote[1]!=6 || nvnote[1]!=12 || nvnote[1]<24)
  {
    if (nvnote[1]>1 && key == 338)
    nvnote[1]=nvnote[1]/2;
    if (nvnote[1]<16 && key == 344)
    nvnote[1]=nvnote[1]*2;
  }


  if      (nvnote[1]>1 && key == 338)  nvnote[1]>>= 1;
  else if (nvnote[1]<16 && key == 344) nvnote[1]+= nvnote[1];





  if (t!=0)
  {
    [code A]
  }
  if ((t>=7 && valalt[0]==-1) || t>=11)
  {
    [code B]
  }
  if ((t>=6 && valalt[0]==-1) || t>=12)
  {
    [code C]
  }
  if ((t>=5 && valalt[0]==-1) || t>=13)
  {
    [code D]
  }
  etc.


  if (t)
  {
    [code A]

    if (valalt[0]==-1)
    {
      switch (t)
      {
        case 7 : [code B] (pas de 'break')
        case 6 : [code C] (pas de 'break')
        case 5 : [code D] (pas de 'break')
        etc.
      }
    }
    else
      switch (t)
      {
        case 11 : [code B]         break;
        case 12 : [code B + C]     break;
        case 13 : [code B + C + D] break;
        etc.
      }
  }





  goto menu;


  BEURK !!!!!!!!!!!


L'implémentation qui optimisera le plus flagrammant est la dernière (la suite de ifs que j'ai transformé en suite de cases). En plus, ton code est dans une boucle, donc le temps gagné est à multiplier par le nombre d'itérations !


Je suppose que certaines de mes modifs te surprennent, n'hésite pas à m'interroger wink
[edit]Edité par Thibaut le 22-09-2001 à 13:57:14[/edit]
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

32

Cool!
Merci d'avoir tt fais pour moi!
c que des petits détails mais j'ai aucune idée de la valeure (en octets et en cycles) de tel oultel instruction. D'ailleurs si des infos là dessus existent fais moi signe.
Je vais corriger ces qq trucs tout de suite.
Je suppose que mon code est encore très optimisable, mais je m'y attaquerai si j'ai le temps
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

33

C'est difficile en C d'avoir le nombre de cycles des instructions parceque TIGCC optimise différemment suivant les cas.

Mais il y a certains trucs évidents comme le coup du switch-case ou du if (nvnote[1]!=3 || nvnote[1]!=6 || nvnote[1]!=12 || nvnote[1]<24)
qui revient à ne rien tester du tout wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

34

celui là je l'avais vu mais il était fait pour un autre truc que j'ai pas rajouté.
le code que tu m'as donné pour les altérations (avec switch) est vraiment très gros.
si j'ai bien compris je dois mettre ça?

if (t)
  {
    valalt[0] = -1
    if (t>=10) valalt[0] = 1;
    if (valalt[0]==-1)
    {
      switch (t)
      {
        case 7 : valalt[x++]=6; valalt[x++]=-8;
        case 6 : valalt[x++]=12; valalt[x++]=-2;
        case 5 : valalt[x++]=4; valalt[x++]=-10;
        case 4 : valalt[x++]=10; valalt[x++]=-4;
        case 3 : valalt[x++]=2; valalt[x++]=-12;
        case 2 : valalt[x++]=8; valalt[x++]=-6;
        case 1 : valalt[x++]=0; valalt[x++]=-14; valalt[x++]=14;
      }
    }
    else
      switch (t)
      {
        case 11 : valalt[x++]=6; valalt[x++]=-8; break;
        case 12 : valalt[x++]=6; valalt[x++]=-8; valalt[x++]=12; valalt[x++]=-2; break;
        case 13 : valalt[x++]=6; valalt[x++]=-8; valalt[x++]=12; valalt[x++]=-2; valalt[x++]=4; valalt[x++]=-10; break;
        case 14 : valalt[x++]=6; valalt[x++]=-8; valalt[x++]=12; valalt[x++]=-2; valalt[x++]=4; valalt[x++]=-10;
        valalt[x++]=10; valalt[x++]=-4; break;
        case 15 : valalt[x++]=6; valalt[x++]=-8; valalt[x++]=12; valalt[x++]=-2; valalt[x++]=4; valalt[x++]=-10;
        valalt[x++]=10; valalt[x++]=-4; valalt[x++]=2; valalt[x++]=-12; break;
        case 16 : valalt[x++]=6; valalt[x++]=-8; valalt[x++]=12; valalt[x++]=-2; valalt[x++]=4; valalt[x++]=-10;
        valalt[x++]=10; valalt[x++]=-4; valalt[x++]=2; valalt[x++]=-12; valalt[x++]=8; valalt[x++]=-6; break;
        case 17 : valalt[x++]=6; valalt[x++]=-8; valalt[x++]=12; valalt[x++]=-2; valalt[x++]=4; valalt[x++]=-10;
        valalt[x++]=10; valalt[x++]=-4; valalt[x++]=2; valalt[x++]=-12; valalt[x++]=8; valalt[x++]=-6; valalt[x++]=0; valalt[x++]=-14; valalt[x++]=14; break;      
      }

c vachement redondant comme code.
dis-moi si c ça, je l'implementerais après packe c très cho pour tester si ça marche.

sinon:
-remplacer mat[0][0] par *mat ne marche pas (ce qui n'est pas très normal).
-les else if ne marchent pas, et d'ailleurs je ne comprends pas à quoi ils servent.
-Pour le Goto menu, c le seul moyen que j'ai trouvé pour revenir tt de suite au début sans effectuer certaines instructions, mais y doit y avoir mieux.
bon à part ça certaines optimisations que tu m'as donné étaient purement liée à l'écriture (&aff[0]=>aff), j'ai donc pas economisé de place pour le moment.
bon pour les evolutions j'en chie pour trouver un système d'affichage de liaison entre les croches/doubles.
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

35

Avec ce que je t'ai donné, c'est en vitesse que le code est optimisé, mais en taille c'est l'inverse. Tu choisis comme tu veux.
Personnellement j'aime la vitesse wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

36

Moi, je préfère la taille.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

37

les deux ?

38

bah j'suis sur le cul en fait c les deux!
merci Thibaut! Bon c surtout flagrant pour la taille packe contrairement à ce que tu croyais, cette partie du code n'est pas dans une boucle, mais elle est utilisée qu'une fois, donc en clair on voit pas la différence.

Bon sinon j'ai bien bossé ces 2 jours donc
UPDATEgrin:
-en fait j'ai surtout rajouté des liaisons entre les croches/doubles mais ça ne marche qu'en binaire et 2 par 2. Je tiens pas encore compte de là où tombent les temps.
-et pis aussi j'ai rajouté l'option barres avec barre de fin, de reprises (gauche et droite), mais elles sont pas encore gerés par le player.
-ah vi j'ai rajouté le nom du prog et mon nom au lancementgrin c pas terrible mais bon c tout ce que j'ai trouvé.
vala. Le code à pris un peu de poids (500 octets?), et à surtout perdu un peu de vitesse, ce qui n'est pas encore vraiment génant.
Bon tjs même adresse (multimania déconne parfois donc verifiez que sur le readme ya marqué version 0.9a)et pis vos commentaires ici.
(en fait à part Thibaut je sais as si y'a bcp de monde qui suit les fabuleuses aventures de partochegrin)
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

39

>> "C'est les deux"
Je suis étonné doom

>> "cette partie du code n'est pas dans une boucle"
J'ai de la merde dans les yeux grin

>> "les else if ne marchent pas"
Obligé qu'il marchent... Montre-moi comment tu as fait.

>> "et d'ailleurs je ne comprends pas à quoi ils servent"
Accélération du prog. Tu teste si a>b, puis si a<=b, c'est autant tester si a>b puis mettre le code de a<=b dans un bloc else


>>"en fait à part Thibaut je sais as si y'a bcp de monde qui suit les fabuleuses aventures de partoche"
Ben moi sur Free j'ai les stats pour tous les fichiers de mon site, je sais exactement combien de fois a été téléchargé la bêta de l'Azur cette semaine, par exemple smile
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

40

effectivement ya qq petits bugs mais rien de grave, ça arrive que dans des cas rares (c pour ça que je les ai pas vu tt de suite)
La dernière version change vraiment bcp les choses, packe une partition avec des croches separés, ct pas terrible.
Sinon dés que j'ai une version complète je fait un peu plus de pub, j'écrit qq exemples.
D'ailleurs si qq à fait des partitions interessantes avec mon prog qu'il n'hésite pas.
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

41

J'ai regardé la source. Tu as mis des elses !
Pour l'histoire de l'optimisation, je suis vraiment confus. La taille aurait dû augmenter !
Car les switch-case se traduisent en ASM par des tables de saut, beaucoup plus volumineuses qu'une suite de cmp.x / bcc confus
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

42

>Car les switch-case se traduisent en ASM par des tables de saut

Est-ce que tu as vérifié ça ? Parce que ça dépend completement du compilateur et du niveau d'optimisation.
So much code to write, so little time.

43

Avec TIGCC et le niveau -O2, tous mes switchs ont générés une table de saut.

Avec le flag par défaut (-Os) peut-être qu'une suite "classique" de cmp / bcc est générée, je ne sais pas.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

44

bon je me suis ptet planté je sais pas.
c pas très grave, vu que le reste du prog est très peu optimiségrin.
Bon sinon y dois rester qq bugs qui se regleront quand j'aurais fait correspondre les pulsations avec les croches.
Et pis y'a des soirs où j'ai vraiment la flemme.
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

45

C'est commun à tous les programmeurs je crois wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

46

bon je me suis amusé à faire un petit gif animé, pour le voir c ici, ça vous donnera pe envie de d'essayer le prog:
http://www.multimania.com/kelso70s/part.gif
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

47

Pour les cases, on peut pas mettre case 14 puis case13, ... ? ça serait plus redondant dans ce cas -> optimisation vitesse + place.

Pour mat[][], il faut mettre **mat, parce que c'est un tableau de tableau, donc un pointeur sur un pointeur sur un quelque chose...
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

48

Moi je suis cette histoire. smile

Vu le *.gif animé, ça parait vachement bien fait smile

Le jour où j'aurais le courage de monter un 2.5 sur une paire d'écouteur, j'essayerai.

Bravo smile
Crée par le Diable à son image.

49

>> "Pour les cases, on peut pas mettre case 14 puis case13, ... ? ça serait plus redondant dans ce cas -> optimisation vitesse + place"

Ben non, réfléchit, tu vas trouver pourquoi j'ai mis dans cet ordre, et qu'un autre ne ferait pas la même chose que la suite de ifs d'origine wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

50

OOUUPPSS !!
Désolé Thibaut, la prochaine fois, je mettrai mes lunettes...
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

51

pour le jack j'ai trouvé ça dans un magasin de Hi-fi, c un truc pour les dictaphones. Le seul truc c qu'il fo appuyer dessus pour que ça marche packe
le machin est fait comme ça:
----
]
----
]
----
alors qu'1 jack Ti:
------


------
/
/
------
mais bon on se demmerde.grin
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

52

je réécrit ton post Kelso, le schémat ne passe pas wink

pour le jack j'ai trouvé ça dans un magasin de Hi-fi, c un truc pour les dictaphones. Le seul truc c qu'il fo appuyer dessus pour que ça marche packe
] ---- ] ----
le machin est fait comme ça----
 
/ / ------
alors qu'1 jack Ti:------
      
       
        ------
      
mais bon on se demmerde.grin
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

53

ah vi merci
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

54

le topic allait sortir de la page...
bon je viens de foutre une dernière version, donc pour ceux qui auraient pas eu la dernière j'ai rajouté des liaisons entre 2 croches ou 2 doubles.
Donc dans celle-ci j'ai fait correspondre ces liaisons avec l'armure, ce qui évite pas mal de bugs, et qui permet une gestion + correct des mesures ternaires. J'aimerais bien savoir si y'a des petits bugs. Prochain truc à rajouter: les liaisons entre 2 note de même hauteur (pour k'elle soit tenue).
vala c tt pour le moment, ça fesait bien 2 semaines que j'avais pas codé.
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

55

j'ai téléchargé je vais voir ça demain : 4H d'électronique à tenir wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

56

C quoi exactly ton prog ? Et comment vous faites pour avoir de la musique sur TI (au risque de passer pour un Newbie...)

57

pour avoir de la musique, c'est simple, il suffit de brancher un casque a la place du link(ou alors ouvrir la calculette pour installer un Haut parleur interne, si t'est bricoleur). Et partoche permet donc d'éditer et de jouer des partitiuons de musique.
avatar

58

Je suis drôlement intéressé !!! Vous pourriez m'envoyer votre prog ? Je vous dirais ce que j'en pense.
C'est du C ou de l'ASM ? (j'ai la flemme d'aller regarder vos bouts de source...)

59

tu peux me tutoyer grin
...et tu peux telecharger mon programme dans ma signature.
Sinon le prog est écrit en C.
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

60

Lol, ceci dit, ç'aurait été un honneur de co-programmer Partoche wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.