Performance VB.NET

Résolu
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 - 9 juin 2006 à 11:38
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 - 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

10 réponses

cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
12 juin 2006 à 12:00
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.
3
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
9 juin 2006 à 12:10
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>
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
9 juin 2006 à 12:19
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 #
0
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
9 juin 2006 à 12:44
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
0

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

Posez votre question
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
9 juin 2006 à 12:50
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>
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
9 juin 2006 à 16:27
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
-------------------------------------------------
0
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
9 juin 2006 à 17:29
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


 


 
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
9 juin 2006 à 18:22
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 #
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
9 juin 2006 à 18:24
<hr />

# Le partage est notre force #
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
12 juin 2006 à 12:18
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>
0
Rejoignez-nous