IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

appels de fonctions et variables intermediaires


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut appels de fonctions et variables intermediaires
    Bonjour,
    Si j'ecrit un bout de code du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (int i = 0; i<min(m,T.length); i++ ) //blabla
    A priori min doit etre appelée à chaque iteration, non? Il serait donc mieux de stoquer le resultat de cette operation que l'on sait constant à l'interieur de la boucle. Cela peut il etre optimisé automatiquement? Je ne pense pas puisque meme si on a des parametres constants (ce qui n'est pas vraiment possible avec les objets), rien ne precise que la fonction renvoie le meme resulat (par exemple, dans le cas d'un random).
    Voila, j'aimerais avoir votre opinion.
    D'avance merci

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Par défaut Re: appels de fonctions et variables intermediaires
    Citation Envoyé par TabrisLeFol
    Bonjour,
    Si j'ecrit un bout de code du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (int i = 0; i<min(m,T.length); i++ ) //blabla
    A priori min doit etre appelée à chaque iteration, non? Il serait donc mieux de stoquer le resultat de cette operation que l'on sait constant à l'interieur de la boucle. Cela peut il etre optimisé automatiquement? Je ne pense pas puisque meme si on a des parametres constants (ce qui n'est pas vraiment possible avec les objets), rien ne precise que la fonction renvoie le meme resulat (par exemple, dans le cas d'un random).
    Voila, j'aimerais avoir votre opinion.
    D'avance merci
    Tu devrais plutot faire un truc de ce genre
    Ton minimum correspond au premier element du tableau au depart
    min = t[0];
    puis tu recupere le minimum véritable ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(i=1;i<t.length;i++) {
      if(min > t[i])
        min = t[i]
    }
    return min;

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    Mon problème n'est pas de trouver le minimum d'un tableau... Il est vrai que mon post contient min et un tableau, mais cela n'a aucun rapport...
    En fait, ma question est : est ce que le compilateur/la jvm peut "factoriser" des appels de methodes. En effet sachant que les parametres sont inchangés et que le resultat retourné depend uniquement des paramètres, cela ne sert à rien d'executer plusieurs fois cette fonction ( min par exemple ).
    Je ne pense pas que Java permette cela mais peut cela peut etre pris en charge par un intermediaire de plus bas niveau?
    Par exemple dans le cas de base de données, un serveur peut utiliser des "resultats temporaires" afin de diminuer le temps d'execution necessaire pour traiter des requetes ayant certaines parties en commun. Je ne connais pas trop les details, mais je voudrais savoir si la meme chose peut exister en Java et automatiquement.

  4. #4
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut
    Je ne sais pas s'il permet de faire ça mais je peux te dire qu'il fait beaucoup d'optimisation sur les boucles.

    Par contre, je me permets une question : pourquoi tu ne sors pas le min(m,T.length) du for ?

  5. #5
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    je pense qu'il vaut mieux calculer avant le min pour ne pas avoir à le calculer dans chaque itération, comme tu le dis toi-meme. Mais je ne connais pas trop la manière de faire de la JVM.

  6. #6
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Juste pour info (ras le bol de me répéter)...

    On ne dit pas fonction ou procédure en java, mais méthode (dans une méthode tu envoies un message à un objet), ça n'as pas le même sens...

    A+

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    Citation Envoyé par Satch
    Par contre, je me permets une question : pourquoi tu ne sors pas le min(m,T.length) du for ?
    C'est ce que j'entendais par
    Il serait donc mieux de stoquer le resultat de cette operation que l'on sait constant à l'interieur de la boucle.
    m constant (cad inchangé dan la boucle) ainsi que T.length, donc le min des 2 est constant tant que l'on est dans la boucle, on peut don effectivment utiliser une variable pour stoquer le resultat.
    Mais le code que j'ai fourni est juste un exemple simplissime... Ma question est d'orde generale, on peut en effet, à la main, creer un nombre suffisant de variables afin d'eviter toutes "repetitions"...

    @ thibaut : Ok, ok mais dans le cas de * static aussi ? Ce sont des methodes de classe?
    et : Les methodes sont des fonctions mais les fonctions ne sont pas necessairement des methodes?

  8. #8
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Oui le terminologie objet est:

    - méthode d'instance public void test()
    - méthode de classe public static void test()

    Merci

Discussions similaires

  1. Appel de fonctions php par variable
    Par WagaSeb dans le forum Langage
    Réponses: 2
    Dernier message: 02/06/2007, 11h06
  2. appel de fonction sans récupération variable
    Par mussara dans le forum Langage
    Réponses: 2
    Dernier message: 22/06/2006, 11h10
  3. [VBA-E] Appel de fonction/procédure depuis une variable
    Par truman dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 09/05/2006, 16h20
  4. Problème de variable lors d'1 appel de fonction PHP
    Par kriekbellevue dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 14/02/2006, 17h49
  5. Réponses: 10
    Dernier message: 06/04/2005, 15h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo