Performance VB.NET [Résolu]

Messages postés
345
Date d'inscription
mardi 3 juin 2003
Dernière intervention
21 mars 2008
- - Dernière réponse : NHenry
Messages postés
14323
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
15 décembre 2018
- 12 juin 2006 à 12:18
Bonjour,

J'ai une petite application écrite en VB6 qui demande pas mal de calcul et d'accès à des tableaux. J'ai réussi en optimisant le code et par divers astuces à faire baisser le temps de calcul de 20 à 3 minutes par rapport à mon code d'origine. Je pense cependant être arrivé dans les limites de ce qui est possible. La prochaine source d'optimisation serait de passer sous un autre langage .

Pensez vous que si je réécrit le code en VB.NET ou en C# je pourrais obtenir de meilleur résultats ??

Par avance merci

Cuq
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Dernière intervention
21 mars 2008
3
Merci
Pour infos :
Pour optimiser le code il y a une partie traitement algorythm pour essayer de limiter les calculs. Ceci a permis les plus grands gain . -> 18 minutes sur mon cas de test à 4 minutes après optimisation. (limitation de l'utilisation des redim pour les tableaux ajout de test pour éviter certains recalculs etc ...)

J'ai aussi supprimer les notations du genre X^2 au profit de X*X qui est beaucoup plus rapide. J'ai essayé le Byval ou Byref mais c'est pareil.

J'ai "linéarisé" le code le plus possible . C'est à dire que j'ai supprimer au maxi les appels aux Subroutines et aux fonctions. Ce qui donne un code un peu plus indigeste à modifier mais qui en VB est diablement efficace pour réduire les temps de calcul.

Et enfin dernier petit truc, j'avais déclaré pas mal de variable en double. Je suis revenu à une déclaration en Single ce qui a encore permis un gain de 10%.

Voilà pour ceux qui voudraient aussi effectuer ce genre de travail sur leurs codes.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de cuq
Messages postés
14323
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
15 décembre 2018
0
Merci
Bonjour

Cela dépend beaucoup de ce que tu fait.
Car généralement, .NET est légerement plus lent que VB6, mais certaines taches sont plus rapides (tri d'une liste et autres), donc tu n'iras pas forcément plus vite, mais tu iras sur plus souple.

Il est plus facile de batiser quelqu'un que de la convertir. (surtout en programmation)
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)

<fon></fon>
Commenter la réponse de NHenry
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
Il est effectivement peut probable que tu puisse aller plus vite en .NET  qu'en VB6 optimisé.

Le seul moyen d'etre plus rapide (à ma connaisance), c'est de coder en C pur (pas C#, pas C++ non plus je pense), ou alors, must du must, en assembleur. A condition dans tous les cas d'optimiser un max le code.

<hr /># Le partage est notre force #
Commenter la réponse de cs_casy
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Dernière intervention
21 mars 2008
0
Merci
Ouais c'est un peu ce que je pensais .... Je n'utilise pas de tri sur des tableaux. Ils me servent juste à stocker des valeurs de type Double pour ensuite faire des opéartions basé sur des fonctions de type Racine, Carré valeur absolu enfin des maths simple mais qui représente mis bout à bout des milliards de calculs.  Et vos avis rejoigne un peu ce que je pensais. Savez vous comment créer une DLL en C qui permetrait par exemple d'externaliser les fonctions de calcul principales ?

Par avance Merci,

Cuq
Commenter la réponse de cuq
Messages postés
14323
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
15 décembre 2018
0
Merci
Bonjour

Question à poser sur un forum plus adapter (cppfrance par exemple).

Il est plus facile de batiser quelqu'un que de la convertir. (surtout en programmation)
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)

<fon></fon>
Commenter la réponse de NHenry
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Dernière intervention
5 mai 2009
0
Merci
autant te prévenir, le gain de passer en C ou C++ sera de quelques dixième de secondes et pas réellement plus

le best est de réorganiser ton code ou sinon d'analyser la mémoire utiliser

un tableau de grand fixe est plus rapide que redim
si le redim est obligatoire, mieux vaut prendre un arraylist
et ainsi de suite

il y a pleins de truc pour otimiser un code. Je programme prsentement un résulveur Sudoku par Backtraking en Java qui est le language le plus lent. Mais malgré ça, je susi plus rapide que la version fait en C sur lequel je me base

Celle en C: 32 millisecondes
Ma version en Java: 16 millisecondes

l'algo est vraiment ce qui influence le plus la vitesse et non le language
-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
Commenter la réponse de cs_dragon
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Dernière intervention
21 mars 2008
0
Merci
Jesuis pas certain de tes infos pour avoir fais des petits prog en C de lecture dans des fichiers et tri de point ou de calcul et la même chose en VB. les programmes C était beaucoup plus rapide. Alors c'est vrai que c'était uniquement des programmes de type console sans interface mais je pense que le programme C est plus rapide sinon je ne m'explique pas que certains soft professionnel arrive à avoir des temps de réponse 100 fois plus rapide. Idem pour avoir cherché un peu d'infos du coté des applications 3D et des jeux on peu lire que sur certains codes rien que le changement de la librairie gérant l'allocation mémoire peu ammener des gains de plus de 50%.  Comme en VB je ne pense pas que l'on puisse aller vers ces subtilités. le passage sous d'autre langage me semble être la seul solution viable ?

En C on peut aussi utilisé les listes chainées pas en VB ceci me semble cependant être aussi une source de gain en temps de traitement ?

Bon WE


 


 
Commenter la réponse de cuq
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
Le C est de base beaucoup plus rapide que le VB.

Mais en gros pour résumer un peu les dire de Dragon, un programme écrit merdiquement en C peut etre très nettement plus lent que programme optimisé en VB.

Tu vas me dire qu'il faut comparer ce qui est comparable. Dans ce cas effectivement, il n'y a pas grand chose qui surclasse le C.

<hr /># Le partage est notre force #
Commenter la réponse de cs_casy
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
<hr />

# Le partage est notre force #
Commenter la réponse de cs_casy
Messages postés
14323
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
15 décembre 2018
0
Merci
Bonjour

d'accord avec cuq, chaque langage a ses optimisations propres, on optimise pas VB comme c++ ou Delphi.

Il est plus facile de batiser quelqu'un que de la convertir. (surtout en programmation)
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)

<fon></fon>
Commenter la réponse de NHenry

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.