Performance [Résolu]

Signaler
Messages postés
63
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
13 avril 2013
-
Messages postés
14769
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 février 2021
-
Bonjour,

( je crois que les performances dépendent de la plateforme ( windows, zOS, ... ) et du langage ( PL/I, Cobol, REXX, VBNet ) et je n'ai pas d'expérience sur VBNet à part quelques tests de loop ).

Question : dans un bout de code répétitif A je fais un call, et dans un autre bout de code B je fais le même call, y a t il optimisation lors de la compilation ou le call est il négligeable en temps même si je passe 10.000.000 de fois par là.

exemple

code A
instruction 1
instruction 2
Call Proc1
instruction 3
fin code A

code B
instruction 1
instruction 2
Call Proc1
instruction 3
fin code B

Est ce que lors de la compilation le CAll Proc1 est il remplacé par le contenu de Proc1 ( comme cela se fait dans d'autres langages ) ou si je passe dans code A 10.000.000 de fois et dans le code B 10.000.000 de fois , je me payerai le cout du call 20.000.000 de fois.
Mais j'ignore si ce cout est lourd ou pas?

Mon choix dépendra de l'optimisation du compilateur, ce que j'ignore.

Quelqu'un a t il un avis sur ce point et d'une manière générale des liens vers les performances en VBNet ( 2010)

Grand merci

Pierre

3 réponses

Messages postés
14769
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 février 2021
151
Bonjour,

Concernant le coût d'un appel, je ne saurais te dire, ça dépend de tellement de facteur (nombre et taille des paramètres, puissance du processeur/RAM, ...), mais en général, c'est quand même très réduit.

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Messages postés
14769
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 février 2021
151
Bonjour,

10.000.000 de fois, c'est quand même beaucoup.
Si la performance te préoccupe, évites le framework et passes plutôt en C/C++.

Sinon, les procédures sont appelées, et non dupliquées, de fait, le coût de l'appel est répété le nombre de fois d'appel. Mais en général, si ton code est assez clair, il est possible qu'il y ait quelques optimisations

Ensuite, il faut connaitre d'avantage sur ton projet, car il est peut être possible de trouver une autre implémentation moins gourmande en appel.

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Messages postés
63
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
13 avril 2013

Merci de la réponse

10.000.000 de fois, c'est quand même beaucoup.

Il s'agit entre autres de comparer des extracts de databases ( signalétiques, mouvements, historiques, ... ) mais dans le cadre de grandes sociétés ( banques, assurances ), donc je peux assurer que ce n'est pas beaucoup

Sinon, les procédures sont appelées, et non dupliquées, de fait, le coût de l'appel est répété le nombre de fois d'appel

C'est justement le prix d'un call que je voudrais connaitre.

Je vais faire une petite application limitée avec plus ou moins le code que j'ai donné, mettre des mouchards de "time", et voir les résultats.

Mais en général, si ton code est assez clair, il est possible qu'il y ait quelques optimisations

Mon Dieu, j'espère que mon code est clair, mais je n'en suis pas sûr

Encore merci et bonne soirée

Pierre