Performance VB.NET

[Résolu]
Signaler
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
-
Messages postés
14813
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
25 juillet 2021
-
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

10 réponses

Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
1
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.
Messages postés
14813
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
25 juillet 2021
156
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>
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
40
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 #
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
1
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
Messages postés
14813
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
25 juillet 2021
156
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>
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
6
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
-------------------------------------------------
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
1
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


 


 
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
40
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 #
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
40
<hr />

# Le partage est notre force #
Messages postés
14813
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
25 juillet 2021
156
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>