Comment optimiser proprement et inteligement un programme N

Comment optimiser proprement et inteligement un programme N - C++ - Programmation

Marsh Posté le 02-06-2004 à 08:43:36    

[quote]


---------------
L'homme qui sait se contenter d'un cpc sais aprecier les bonnes choses de la vie.
Reply

Marsh Posté le 02-06-2004 à 08:43:36   

Reply

Marsh Posté le 02-06-2004 à 08:44:37    

En fait je dois optimiser un programme pour qu'il soit plus rapide et je demande des conseils pour le faire correctement.


---------------
L'homme qui sait se contenter d'un cpc sais aprecier les bonnes choses de la vie.
Reply

Marsh Posté le 02-06-2004 à 08:53:07    

tu sais, si tu ne nous en dit pas plus sur ton programme on ne va pas pouvoir faire grand' chose pour toi...
si tu veux justes le règles de base de l'optimisation, google est ton ami

Reply

Marsh Posté le 02-06-2004 à 08:56:09    

C'est un programme qui capture une image et en fait le traitement,je ne peux pas passer le source car c un programme pour une machine en entreprise.
Je demande des conseil d'optimisation,g ete voir sur google,mais cela n'est pas toujours tres clair.


---------------
L'homme qui sait se contenter d'un cpc sais aprecier les bonnes choses de la vie.
Reply

Marsh Posté le 02-06-2004 à 08:58:56    

Faut optimiser le traitement....

Reply

Marsh Posté le 02-06-2004 à 09:00:38    

. réduire les calculs sur des réels (à voir selon la précision dont tu as besoin...)
. précalculer ce qui peut l'être
. pour un parcours d'image, si tu fais des boucles imbriquées toujours faire le parcours des lignes avant celui des colonnes
. éviter les boucles imbriquées (vu que tes pixels sont certainement contigüs en mémoire, essaies de te réduire à une seule boucle)

Reply

Marsh Posté le 02-06-2004 à 09:03:24    

En fait,je me demandais un truc.
j'vais d declaration de pointeur dans ma methode,mais ce que j'ai fait c'est dans le constructeur :
toto1=new titi() ;
dans le constructeur,puis dans ma methode:
toto=toto1;
Est ce que c'est une bonne optimisation de faire les new en dehors de ma methode a optimiser ?


---------------
L'homme qui sait se contenter d'un cpc sais aprecier les bonnes choses de la vie.
Reply

Marsh Posté le 02-06-2004 à 09:27:05    

Si c'est possible, oui. Il faut faire le moins d'opérations possible dans les boucles internes, donc si tu peux appeler tes constructeurs une seule fois avant le bouclage, te gêne pas : "précalculer ce qui peut l'être ".

Reply

Marsh Posté le 02-06-2004 à 09:48:53    

Merci,el muchacho je n'etais pas trop sur de cette methode,meme si elle me parraissait correcte.


---------------
L'homme qui sait se contenter d'un cpc sais aprecier les bonnes choses de la vie.
Reply

Marsh Posté le 02-06-2004 à 10:29:52    

Je me demandais aussi s'il etait possible de connaitre le temps pris par une instruction ?
exemple : bool ette ;combien de micro secondes cela prend t'il pour etre effectué ?
C'est peut etre quelque chose que l'on se demande jamais,mais moi qui fait parfois de l'assembleur sur un processeur a 4mhz,ca me sert.


---------------
L'homme qui sait se contenter d'un cpc sais aprecier les bonnes choses de la vie.
Reply

Marsh Posté le 02-06-2004 à 10:29:52   

Reply

Marsh Posté le 02-06-2004 à 10:32:01    

la déclaration d'une variable ça ne te prends pas de temps hein :o
c'est à la compilation que ça se passe

Reply

Marsh Posté le 02-06-2004 à 10:38:03    

Heu,bon,j'avoue,je l'avais oublié.
 
revivalcpc.free.fr(mon site)
revivalcpc.free.fr/hit(le site de ma classe en construction)
revivalcpc.free.fr/video(des videos amusantes)


---------------
L'homme qui sait se contenter d'un cpc sais aprecier les bonnes choses de la vie.
Reply

Marsh Posté le 03-06-2004 à 09:53:39    

J'aurais le coder en asm direct.


---------------
L'homme qui sait se contenter d'un cpc sais aprecier les bonnes choses de la vie.
Reply

Marsh Posté le 03-06-2004 à 10:09:17    

tu as des outils qu'on appels je crois "profiler" et qui permet de savoir quels sont les sections de codes les plus executées et donc celles qui faut optimiser

Reply

Marsh Posté le 03-06-2004 à 10:14:46    

- le coder en asm
- paralléliser au maximum
- user et abuser des prefetch
- user et abuser du MMX/SSE/SSE2/3d Now


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 03-06-2004 à 10:31:41    

Harkonnen a écrit :

- le coder en asm
- paralléliser au maximum
- user et abuser des prefetch
- user et abuser du MMX/SSE/SSE2/3d Now/Altivec


 
 :whistle:

Reply

Marsh Posté le 03-06-2004 à 10:31:43    

Harkonnen> +1
 
- User et abuser du cerveau humain pour réfléchir. En plus ça rend intelligent.
- User et abuser des fonctions FPU
- User et abuser du cache L1 et L2
- Aligner le code et les données
 
Analyse et écrit au moins 3 codes différents qui font la même chose.
 
Pour te donnée une idée, d'une routine (bitbltalpha) faisant un traîtement ARGB de 79 cycles, je suis passé à 22 cycles. J'ai mis deux jours, mais ça valait le coup.

Reply

Marsh Posté le 03-06-2004 à 10:38:42    

J'ai oublié :
- la parallélisation n'est effective que si le code est déjà dans le cache (déjà exécuté).
- paralléliser correctement avant le début de la boucle, ou faire un petit jmp pour vider le pipe et repartir sur u-pipe.

Reply

Marsh Posté le 03-06-2004 à 10:44:09    

de l'asm ... affreux ... ;)
Y a tellement d'autre moyens d'optimiser presqu'aussi bien en C ;)

Reply

Marsh Posté le 03-06-2004 à 11:21:57    

Citation :

- User et abuser du cerveau humain pour réfléchir. En plus ça rend intelligent.
Analyse et écrit au moins 3 codes différents qui font la même chose.


 
;)

Reply

Marsh Posté le 03-06-2004 à 12:04:20    

cricri_ a écrit :

de l'asm ... affreux ... ;)
Y a tellement d'autre moyens d'optimiser presqu'aussi bien en C ;)


c'est justement le "presqu'aussi" qui pêche :o
asm et cerveau roulaize


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 04-06-2004 à 08:48:02    

Je ne peux pas le faire en asm,c C++ essentiellement.Par contre sur mon AmstraD CPC(+),la je fait de l'asm et l'optimisation je connait bien.Plein de contraintes et de limites pour coder ,mais ca motive a donner le meilleur de sois meme pour avoir quelque chose de tres interressant niveau visuel.


---------------
L'homme qui sait se contenter d'un cpc sais aprecier les bonnes choses de la vie.
Reply

Marsh Posté le 04-06-2004 à 09:54:04    

Urgent :g d sources en C avec des appel a des fonctions ::outv(machin chose)Ce sont des fonctions DOS mais bordland c++builder 5 ne les reconnais pas car il faut une version anterieure.Quelqu'un a t'il un compilateur gratuit qui accepte ces fonctions ?


---------------
L'homme qui sait se contenter d'un cpc sais aprecier les bonnes choses de la vie.
Reply

Marsh Posté le 04-06-2004 à 10:14:44    

Dans ma doc DOS de Borland C++ 5, y a rien pour outv(), peut-être pas le bon fichier d'aide. Dans HLP de Win 3.11 non plus.
C'est une fonction "classique" ou une macro, ou issue d'une bibliothèque ? Elle n'est pas définie dans un autre module ?
Elle est censée faire quoi ?

Reply

Marsh Posté le 04-06-2004 à 10:17:01    

Si c'est des fonctions d'accès aux ports (outpw, outpd, ...) ben y'a pas de remède car WinNT/2K/XP empêche l'accès aux ports => plantage assuré.
Si c'est pour Win95, sous VC++ il faut mettre un underscore devant (_outp, ...), peut être que sous Borland aussi.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 04-06-2004 à 10:30:42    

ces fonctions sont dans un source qui effectue un effet graphique(je me renseigne sur les démos pc),je vais tester pour l'underscore.
Merci


---------------
L'homme qui sait se contenter d'un cpc sais aprecier les bonnes choses de la vie.
Reply

Marsh Posté le 04-06-2004 à 11:32:48    

Si ça accède directement à la mémoire vidéo, savoir si c'est transposable sous Windôze qui va faire de la résistance (sous win3.11/95/98(Me) on accède encore au matériel directement => "danger" potentiel et pb portabilité).
J'avais pas pensé à _ avant mais dans la liste pas trouvé non plus.
 
Si la fonction n'est pas classique, faudrait voir ce qu'elle fait (fonctionnellement).... On trouve des outv() dans du code sur Google mais ils sont "perso" donc peut-être pas "génériques"/standard.

Reply

Marsh Posté le 04-06-2004 à 11:32:49    

Ok.
Oublie tout. C'est de la vieille prog graphique sous DOS.
On ne fait plus du tout comme ça (attaquer le hardware), on passe par une couche logicielle (DirectX, OpenGL, ...)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 04-06-2004 à 11:53:12    

Ok,je prend note,en assembleur "j'attaque" directement la machine,mais sur pc je vais etudier l'openGl,qui d'ailleur est portable sous linux


---------------
L'homme qui sait se contenter d'un cpc sais aprecier les bonnes choses de la vie.
Reply

Marsh Posté le 04-06-2004 à 11:57:06    

Z80_Snake a écrit :

ces fonctions sont dans un source qui effectue un effet graphique(je me renseigne sur les démos pc),je vais tester pour l'underscore.
Merci


t'es allé voir ce topic ? :ange:
http://forum.hardware.fr/forum2.ph [...] 611&cat=10


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 04-06-2004 à 13:38:36    

Harkonnen:merci pour le lien.


---------------
L'homme qui sait se contenter d'un cpc sais aprecier les bonnes choses de la vie.
Reply

Marsh Posté le 14-06-2004 à 11:46:12    

J'ai effectué des creation d'instances dans le constructeur de ma classe au lieu de les metre dans une methode,mais au lieu que celle ci soit plus rapide ,elle est plus lente qu'avant les modifs,d'ou cela peut il venir ?


---------------
L'homme qui sait se contenter d'un cpc sais aprecier les bonnes choses de la vie.
Reply

Marsh Posté le 14-06-2004 à 12:02:56    

j'ai rien compris

Reply

Marsh Posté le 14-06-2004 à 12:29:50    

taz"j'ai rien compris"
Moi aussi,c'est pour ca que je demande


---------------
L'homme qui sait se contenter d'un cpc sais aprecier les bonnes choses de la vie.
Reply

Marsh Posté le 14-06-2004 à 13:33:03    

mais moi je veux dire j'ai rien compris de ce que tu as fait.

Reply

Marsh Posté le 14-06-2004 à 13:35:02    

Taz a écrit :

mais moi je veux dire j'ai rien compris de ce que tu as fait.


 
mais lui non plus, mais lui non plus :D


---------------
When it comes to business/legal topics, just assume almost everyone commenting has no idea what they’re taking about and have no background in these subjects because that’s how it really is. Harkonnen 8-> Elmoricq 8====>
Reply

Marsh Posté le 14-06-2004 à 13:45:53    

En fait dans une methode de ma classe j'ai enleve toute les creations d'instances qui ralentissais cette classe.
constructeur :
m_pTraitement357_1=new C357(&CAMERA1,this);
methode "ontimer" :
pointeur=m_pTraitement357_1;
 
voila,et je me demande si c'est correct


---------------
L'homme qui sait se contenter d'un cpc sais aprecier les bonnes choses de la vie.
Reply

Marsh Posté le 14-06-2004 à 13:49:27    

on comprends rien

Reply

Marsh Posté le 14-06-2004 à 13:53:33    

Tu comprend rien


---------------
L'homme qui sait se contenter d'un cpc sais aprecier les bonnes choses de la vie.
Reply

Marsh Posté le 14-06-2004 à 13:58:49    

ben ce que tu dis ne veux rien dire
 
 
"hey j'ai fais une variable i et le pointeur est incrémenté"

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed