toki127
Messages postés241Date d'inscriptiondimanche 18 janvier 2009StatutMembreDernière intervention31 mai 2021
-
4 févr. 2009 à 19:54
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 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!
gnairod
Messages postés37Date d'inscriptionsamedi 22 novembre 2008StatutMembreDernière intervention11 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.
toki127
Messages postés241Date d'inscriptiondimanche 18 janvier 2009StatutMembreDernière intervention31 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!
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 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.
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 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.