Besoin de conseils... Merci

toki127 Messages postés 241 Date d'inscription dimanche 18 janvier 2009 Statut Membre Dernière intervention 31 mai 2021 - 4 févr. 2009 à 19:54
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 - 4 févr. 2009 à 22:32
Bonsoir à tous!

Voila mon problème:
J'ai codé un petit programme en Visual Basic. Le problème est qu'il y a beaucoup de calculs à faire, et j'aimerai beaucoup amélioré les performances! :)
je suis donc motivé pour essayer de le "convertir" dans un autre langage pour obtenir de meilleurs résultats!
N'étant pas déjà un grand programmeur en VB, je suis un peu dans le flou pour le C...
Ce serait donc super si un "expert" pouvait me donner son avis, des conseils!
par exemple: est ce faisable? faut il repartir de zéro? les pièges? comment faire?
merci beaucoup par avance de votre aide, et merci à ceux qui n'ont pas envie de m'aider de ne pas faire de commentaires inutiles! ;)
bonne soirée à tous!

5 réponses

gnairod Messages postés 37 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 11 avril 2010
4 févr. 2009 à 20:37
Tous logiciels programmer dans un langage de programmation d'amateur comme VB est faisable en C.
Si tu veux des perfs tu recodes en C et t'actives les options de perf et les jeux d'instructions SSE[1..4] si tes machines supportent et si c'est tjr pas suiffant tu codes en ASM.
0
toki127 Messages postés 241 Date d'inscription dimanche 18 janvier 2009 Statut Membre Dernière intervention 31 mai 2021
4 févr. 2009 à 20:47
ok! donc c'est possible!
de plus, je n'utilise que peu de fonctions différentes, mais répétées un très grand nombre de fois! :)
le problème est de trouver les équivalents de chacunes et de bien organiser tout ca!
pourrais tu regarder mon code pour me conseiller?
en tout cas, merci de ta réponse!
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
4 févr. 2009 à 21:37
Attention à ne pas faire une simple "traduction", c'est une erreur que je vois trop souvent. Si les résultas obtenus sont justes, les perfs ne seront par contre pas au rdv.


Refais tes algos en pseudo code sur papier et ensuite code les en C en pensant C, pour cela il ne faut surtout pas avoir le VB devant les yeux.

ciao...
BruNews, MVP VC++
0
toki127 Messages postés 241 Date d'inscription dimanche 18 janvier 2009 Statut Membre Dernière intervention 31 mai 2021
4 févr. 2009 à 21:45
merci Brunews,
malheureusement, je ne sais pas penser en C! :)
par contre j ai les idées bien claires sur papier!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
4 févr. 2009 à 22:32
Salut,

Ton programme est fait en vb6 ou vb.net

Attention,
si ton algo est pourri en vb, et c'est pas pour ca qu'il sera performant en C.

Les performances d'un VB.net si il est bien utilisé sont en général bonne.
Les performances d'une application VB6 sont aussi bonne sur des machines actuelles car ce logiciel a plus de 10 ans
et donc fonctionnait sur des machines avec des processus a 100mhz et 32mo de mémoire sous windows 95
Donc avec un vista ou un XP avec 2go de mémoire, c'est du bonheur pour vb6.

Après il faut penser que 80% du temps d'exécution est dans 20% du code
il faut regardé ce code (il y a t il des acces BDD/disque/distant)
Le problème vient peut etre de la.

Les chaines de caractères en général posent problème
exemple
en vb.net (il faut utiliser les stringbuilder ) a la place du +
et les string.format()

Apres il faut regarder les boucles
il peut avoir du code qui s'execute dedans qui peut etre externalisé

il faut compiler en mode release (c'est plus rapide) en dotnet
il faut utiliser les methodes du framework à la place des methodes de compatibilité

en dotnet il eviter d'utiliser les objects COM
exemple ADODB mais ADO.net

en vb6 faire en ADO à la place du DAO

La liste des optimisations peut etre tres longue

*rapidité
*taille de l'exe
*taille en mémoire
On a le choix dans les optimisations.

Si tu colles le bout de programme
ou explique plus ton probleme la réponse pourrait etre possible en VB
car un langage quand on débute on fait beaucoup d'erreur dessus (c'est pas évident)

exemple d'erreur courante en C
les allocations mémoire
les débordements de tampons
les pointeurs
...

De nouveaux problemes vont survenir.
Changer de langage c'est pas évident.

Il y a une autre solution  si le programme est long.
c'est d'externaliser le code lent dans une DLL en C et l'appelé de VB
mais d'autres problemes peuvent apparaitre.

Bon courage
0