1

Si vous connaissez des petits trucs pas trop évidents pour optimiser un prog en C (autre que passer à l'ASM grin)...
Sur deux points de vue :

* Optimisation en taille mémoire
* OU optimisation en vitesse

(ça dépend des passages du prog)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

2

désolé, mais je vais te rappeller un truc que tu dois connaitre ... (donc pas tres utile pour toi).
quand le nombre de boucle est toujours le mm, ca sert a rien de faire une for ou que sais-je ... il faut faire directement les appels, c'est plus rapide ...

squal92> tu as regardé dans le black book ... ca en parle un peu ...

3

Euh c'est plus une question qu'un réponse en fait ...
Est-il possible avec TIGCC de voir le fichier assembleur complet généré par le compilateur?
V@nilius

4

Bien sur : si tu programmes avec l'IDE : File/Preferences et tu décoches l'option Delete assembly files after succesful linking
Si tu utilise la ligne de commande : paramètre -c (je crois)

5

nEUrOne> non, je n'ai pas maté le black-book... faut quej'aille voir s'il y est à la bibliothéque de l'IUT.
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

6

surement wink
g poste la couverture ds la premiere page du topic ds algo wink

t'as du le voir, d'ailleurs, nan? grin
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

7

oui, j'ai vu la couverture.
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

8

toujours preferer les fcts bas niveau
utiliser des = a la place des |=/^= des qu'on peut
utiliser des registers: place et vitesse
etc...
[edit]Edité par janjan2 le 11-11-2001 à 14:53:15[/edit]
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

9

Au niveau des boucle..
au lieu de faire un for(i=0;i<9;i++) il vaux mieux faire un: i=9; while (i--) ..
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

10

OK... je note tt ça...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

11

TImad> je suppose que c'est de l'optimisation vitesse ?
janjan2> tient, je connaissais pas ça sad ça peut m'être aussi pas mal utile...


(je fé remonter le topic !)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

12

Il mesemble que c'est une optimisation en taille mais surtout vitesse...
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

13

OK. optimisation ds les deux sens... l'idéal wink
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

14

Declarer en register les variables... Ca peut le faire. omit_frame aussi.

15

omit_frame...
c pas pareil que -fomit- je sais plus quoi ? (j'en sais rien... c pour ça que je pose la question... je materai la doc)
Les vars en register : OK... le seul pb c qu'il n'y a que poeu de registres... va falloir faire le tri des variables pour savoir lesquelles sont les + utilisées...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

16

Ca se voit vite.
C peut etre -fomit oui wink

17

OK.
de tte façon, je coris que c -fomit, avec dc'autres trucs après (g passsé pas mal de temps de l'après midi à surfezr un peu partt à ce sujet)

ça se voit vite => c clair : les compteurs !
Mais y'en a trop...
va falloir que j'optimise ça pour en utiliser moins... que ceux qui sont utilisés en plusieurs points...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

18

Ca depend... Revois ton algo.

19

c clair que mon alog, je pourrais le revoir, et pas qu'un peu... sad
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

20

-Os produit du code, certe court mais aussi plus lent (de bcp pr certains algos)
-O3 est parfait!

pour un programme qui aurait une partie menu.c et une autre routines_graphiques.c
on doit comiler les menus en -Os, les fcts graphiquesen -O3 puis linker
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

21

c pas con ça... ça me fait faire un Batchfile pr la compilation... mais j'en ai déjà fait (à l'IUT, je peux faire que comme ça sad)
Mais ça permettrait un meilleur truc, probablement...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

22

-O3 n'est pas parfait, j'utilise -O2. Un même fichier me génère un exécutable de 17 ko en -O3, et 11 ko en -O2...

23

arf... la différence est tt de même importante grin
Et est-ce que la différence de vitesse à l'exécution est notable ?
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

24

faut tester pr chaque programme:
pour l'exemple de blue_Z,
il est clair qu'il faut utiliser -O2
mais si tu as 500o/1ko, utilise -O3 (plus rapide)
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

25

Le switch pour supprimer les frame pointers est bien -fomit-frame-pointer.
attention exit et atexit ne fonctionnent pas avec ce switch dans TIGCC (donc autant aussi mettre #define NO_EXIT_SUPPORT, ça permettra aussi de gagner une dizaine d'octets).
attention Selon la documentation de TIGCC, les calculs en virgule flottante ne fonctionnent pas non plus avec ce switch!

Et personnellement, je suis plutôt le type -Os que -O3. D'ailleurs, les versions récentes de TIGCC utilisent -Os par défaut, et non plus -O2 comme avant. (Ce sont Sebastian et/ou Zeljko qui ont décidé cela, pas moi.) Mais effectivement, pour la vitesse maximale, -O3 est ce que tu veux. -Os est pour la taille minimale, -O2 pour un compromis.
[edit]Edité par Kevin Kofler le 16-11-2001 à 00:56:52[/edit]
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é

26

le #define NO_EXIT_SUPPORT, je le met toujours, vu que j'utilises jamais les exit...
=> je gagne effectivement quelques octets.
virgule flottante... heu. faudra que je vérifie, mais je crois pas que j'en utilise (trop lent !)
merci.
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

27

quand je compile mon prog avec -03 il prend environ 50 octets de moins qu'avec 02 > j'en conclut alors qu'ici 02 est plus rapide qu' 03 ???
et pour la plupart de mes autres progs, de les compiler avec 0s ou 02 y a un ecrat d'une dizaine d'octets, donc c mm pas la peine...

declarer une variable en register ça fait une difference visible ???
ds ce cas autant declarer la pluspart de ses var en register confus

a koi ça sert de supprimer les frame pointeur ??? (le pb ce que ds mon prog j'utilise pas mal de float donc c pas trop possible)

pour l'optimisation de TiMad de remplacer un while par un for, chez moi l'optimisation n'est en tt cas pas en taille car ça prend une vingtane d'octets en plus (au moins), et pour la vitesse j'ai pas reussis a voir la difference.

28

pr le for => while, ça optimise pas en taille... par contre, en rapidité, c jouable (à quelques cycles près par boucle, je penses)

En passant de sans -fomit..., en Os, ac NO_EXIT_SUPPORT
à
-fomit O3 et toujours NO_EXIT_SUPPORT, mon prog est passé de 43585 à 44485
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

29

Je ne sais pas si GCC sait utiliser dbra. Si ce n'est pas le cas, alors l'optimisation de TiMad ne fonctionne pas.
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é

30

je sais pas.. tt ce que je sais, c'est que ça prend plus de mem sad
Mais je penses que ça fait une comparaison de moins à chqua cycle, non ?
(enfin, si effectivement le dbra est supporté... g essayé de mater le code ASM... mais g déjà un peu de mal ac l'A68k... mais alors ac le GNU ASM...)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall