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

EDI Delphi Discussion :

Réduire le temps d'exécution


Sujet :

EDI Delphi

  1. #1
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut Réduire le temps d'exécution
    Bonjour,

    Quand on a plusieurs boucles FOR et WHILE imbriquées ça met un certain temps pour exécuter un traitement. Existe-t-il une option dans l'IDE de D7 pour réduire ce temps ?

    Merci.
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Quel rapport avec l'IDE ? le temps d'exécution dépendra des traitements a effectuer. Maintenant si certains traitements peuvent être fait dans des threads alors le temps d'exécution global diminuera peut-être ! la question est trop vague (plusieurs boucles For While imbriquées ) en tout cas, AMHA, ce n'est pas dans l'IDE qu'il faut chercher une réponse
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 844
    Points
    24 844
    Par défaut
    En Débogage sous Delphi, cela sera plus lent qu'une version Release, à part ça, l'IDE n'a pas d'influence

    En D7, si tu manipules des string ou des tableaux en les redimensionnant souvent, tu peux améliorer les performances de deux manières
    - Allocation prédictive avec une gestion manuelle des bornes
    - FastMM

    Il nous faudrait du code pour savoir ce que l'on peut te proposer mais par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i := 0 to 1000 do
      S := S + 'A';
    Ce code ci dessus est très lent et le code ci-dessus, sera 100 fois plus rapide car évite la réallocation de la chaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SetLength(S, 1001);
    for i := 0 to 1000 do
      S[i + 1] := 'A';
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 416
    Points : 5 814
    Points
    5 814
    Par défaut
    salut

    comme le dis SergioMaster c'est plus un problème de conception (algorithmie) que d'ide

    je pense qu'il faut que tu revois tes condition d’arrêt de tes différentes boucles
    je ne suis pas un fervent défenseur des break et autre joyeuseté qui permette une sortie de boucle rapide
    mais il est évident que pour de la programmation rapide et jetable ceci est bien pratique

    le FOR est une boucle particulière pour lequel on demande de parcourir Tout les éléments de l'ensemble
    elle peut très bien être remplacé avantageusement par une boucle While

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    InCBoucle:= 0;
    MaCond1 := (InCBoucle <= MavAlMax);
    MaCond2 := False;
    While (MaCond1 = true)  Do 
      //... je fais ce que j'ai a faire
     
       MaCond2 := OnDoitSortir(InCBoucle,MaVaraiable);
       Inc(InCBoucle);
       MaCond1 := (InCBoucle <= MavAlMax) and (MaCond2=False) ;
     end ;
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  5. #5
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Re et merci pour vos réponses.
    Bon alors si ce n'est pas l'IDE alors tant pis.
    Non, je manipule des TQuery depuis lesquelles je récupère des string.
    J'avais déjà remplacer certaines TQuery par des TkbmMemTable ca avait réduit un peu le temps de traitement ou peut-être que je ne les utilisent pas de façon optimale ?
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 416
    Points : 5 814
    Points
    5 814
    Par défaut
    salut

    pour la manipulation de query c'est peut etre tes requettes qu'il faut optimiser
    voir si la table a les bon index
    eviter le mais plutôt utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select MONCHAMPS2,MONCHAMP3,... from MATABLE  where MES_CONDITIONS_RESTRICTIVE
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  7. #7
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    J'ai poster sans voir les autres posts ou peut-être ils se sont croisés.
    Je me suis résèrver l'optimisation en dernier lieu au cas où je ne trouverais pas d'autres solutions.
    J'utilise le strict minimum pour la récupération de champs et pas de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM ....
    Mais peut-être qu'il faut revoir la disposition des boucles donc réanalyser.

    Merci à vous tous !
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Re,

    peut être que la query est mal ficelée d'où l'obligation de traitement ?
    par exemple une boucle pour faire un cumul se remplace par un SUM() (avec à l'occasion un GROUP BY)
    mais comme on reste dans le flou (même pas la SGBD) .....
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Ah pardon, pour le SGBD c'est BDE avec tables PDX parce qu'au départ j'avais pensé que c'etait une affaire de compilateur.
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Je ne reviendrai pas enfoncer le clou sur le BDE (obsolète)
    pour ce qui est de Paradox , kbmem n'apporterait rien ou peu car Paradox travaille en mémoire, et le SQL proposé par Paradox est plus que limité !

    tu ferais mieux d'ouvrir un nouveau sujet, dans "base de données", avec ce que fait une boucle ou ce que tu veux faire ,et la description de la/des table/s et on pourrait peut être te proposer une requête plus efficace
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  11. #11
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 844
    Points
    24 844
    Par défaut
    Ah la réponse va être plus simple ... ne plus utilisé BDE et Paradox !
    C'est lent par nature !
    Le SQL sous Paradox faut qu'il soit ciblé sur un tout petit lot d'enregistrement !
    Il est parfois plus rapide d'utiliser un TTable et de boucler en Delphi que de passer par le SQL qui génère un fichier temporaire contenant le résultat
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  12. #12
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    Citation Envoyé par anapurna Voir le message
    le FOR est une boucle particulière pour lequel on demande de parcourir Tout les éléments de l'ensemble
    elle peut très bien être remplacé avantageusement par une boucle While
    Le avantageusement n'est pas de circonstance. Un for sera toujours plus rapide qu'un while car la condition d'arret est évaluée une seul fois au démarrage de la boucle, alors que le while l'évalue à chaque itération.
    Par contre, il faut utiliser un break pour en sortir sur un condition spéciale (je n'en suis pas fan non plus, mais je l'utilise avec parcimonie, en le mettant en exergue avec un code du genre
    break; //------------- BREAK ---------------)

    Comme le dit Sergio, je crois qu'il faudrait revoir ta query qui est peut être mal ficelée. Il me semble qu'une grosse requete sera plus efficace qu'une boucle qui effectue plein de petites requetes.

    Autrement, dans l'IDE, options du projet > compilateur > optimisation te permet d'optimiser aussi les boucles quand c'est possible (boucle a l'envers car la comparaison à 0 est une instruction processeur directe par exemple)

  13. #13
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Citation Envoyé par SergioMaster
    Je ne reviendrai pas enfoncer le clou sur le BDE (obsolète)
    Je sais, je sais,...... j'avais déjà abandonner BDE pour FB mais quand on a des applic avec PDX faut bien chercher si y a moyen de dépasser cette limite.
    Evidemment fallait poster au forum approprié mais n'avais pas pensé que c'etait un problème de BDD.

    Citation Envoyé par ShaiLeTroll
    Il est parfois plus rapide d'utiliser un TTable et de boucler en Delphi
    J'avais eviter les TTable à cause de sa lenteur en réseau ce qui oblige de fermer et de réouvrir les tables j'en avais fait une idée obstinément fixe d'eviter cela mais parfois on doit combiner. Mais après tout, ce n'est que pour une seule fonctionnalité et pas pour toutes l'appli alors je vais essayer avec les TTable. Merci ShaiLeTroll et à tous le monde. Je met donc résolu.
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  14. #14
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 844
    Points
    24 844
    Par défaut
    On n'est pas obligé de faire Close\Open, FlushBuffers coté écriture et Refresh côté lecteur font le boulot !
    Mais je te confirme qu'en réseau avec un accès concurrentiel, il faut éviter le TTable et faire des SQL très ciblés
    Aujourd'hui, j'ignore ce que cela donne mais sous Win98, les fichiers Paradox partagé avec le NetDir, WorkDir ... bien configuré, disons que 7 clients max, après ça se cassait la gueule si tu avais déjà accès très soutenu
    Tu passais tes fichiers sur un serveur UNIX via un Samba, tu pouvais monter à 100 !

    Toutes les applications que j'ai connu en DBE\Paradox ou un en DBase qui ont eu besoin d'un accès concurrentiel plus performant sont passés sur MySQL ou FireBird ...

    Conclusion pour le couple BDE\Paradox
    TQuery pour le quotidien a très faible volume (idéalement, la ligne ou de petite liste)
    TTable pour les traitements en masse où beaucoup de données sont échangées entre le module et le BDE
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  15. #15
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Citation Envoyé par ShaiLeTroll
    TTable pour les traitements en masse où beaucoup de données sont échangées entre le module et le BDE
    Ca fait l'affaire surtout dans le contexte actuel où je n'ai qu'une seule option de traitement à modifier et qui, justement, fait du traitement en masse pour le reste ce n'est que des queries. Il me semblait que Refresh faisait du close/open mais puisque tu le dis....

    Citation Envoyé par ShaiLeTroll
    Tu passais tes fichiers sur un serveur UNIX via un Samba, tu pouvais monter à 100 !
    Ca montait 100 à cause de quoi précisément ?

    Merci ShaiLeTroll
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  16. #16
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Ah non pardon, j'etait obligé de faire du close/open à cause du Table.LockTable(ltWriteLock) où des tables etaient impliquées dans certains traitements.
    Pour ce qui est du flushbuffers, j'utilise à la place le BDEFLUSHBUFFERS de la JVCL car comme il y avait plusieurs tables a flusher donc une seule ligne me suffisait pour eviter des tracas au cas où j'aurais oublier un flushbuffers.
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  17. #17
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 416
    Points : 5 814
    Points
    5 814
    Par défaut
    Citation Envoyé par guillemouze Voir le message
    Le avantageusement n'est pas de circonstance. Un for sera toujours plus rapide qu'un while car la condition d'arret est évaluée une seul fois au démarrage de la boucle, alors que le while l'évalue à chaque itération.
    Par contre, il faut utiliser un break pour en sortir sur un condition spéciale (je n'en suis pas fan non plus, mais je l'utilise avec parcimonie, en le mettant en exergue avec un code du genre
    break; //------------- BREAK ---------------)
    quand je parle avantageusement c'est pour la possibilité d'avoir d'autre option de sortie
    le for ne fait qu'une boucle incrémentale
    la condition de sortie n'est pas fait seulement au debut
    a chaque boucle on teste si on est sur le dernier incrément ou pas mais c'est effectivement plus rapide que deux test
    quand au break cela oblige le compilateur a savoir sur quel item ils se trouve du coup tu perd l'avantage d'une sortie "classique"

    je me souvient d'un test qu'un apprenti ingé avais fait entre un boucle dites classique et des boucles a base de for break exit continue ...
    au final il a eu quelque surprise ... depuis les compilateur on peut être évolué mais rien n'est moins sure

    Citation Envoyé par guillemouze Voir le message
    Comme le dit Sergio, je crois qu'il faudrait revoir ta query qui est peut être mal ficelée. Il me semble qu'une grosse requete sera plus efficace qu'une boucle qui effectue plein de petites requetes.

    Autrement, dans l'IDE, options du projet > compilateur > optimisation te permet d'optimiser aussi les boucles quand c'est possible (boucle a l'envers car la comparaison à 0 est une instruction processeur directe par exemple)
    sauf que si tu fait un break cela m’étonne que le compilo l'optimise
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  18. #18
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 844
    Points
    24 844
    Par défaut
    Citation Envoyé par freud Voir le message
    Ca montait 100 à cause de quoi précisément ?
    100 utilisateurs en accès concurrentiel, quelques choses de modérer, beaucoup d'utilisateurs en consultation et quelques un en écriture
    Dès que tu as un client qui écrit beaucoup, cela fout la merde !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  19. #19
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    Citation Envoyé par anapurna Voir le message
    quand au break cela oblige le compilateur a savoir sur quel item ils se trouve du coup tu perd l'avantage d'une sortie "classique"

    sauf que si tu fait un break cela m’étonne que le compilo l'optimise
    pour l'optimisation, je suis d'accord, je pense qu'au niveau des boucles, l'optimisation doit etre assez rare et se limiter à des cas simples (c'était surtout pour préciser que l'option existe).
    pour le break, je suis pas un spécialiste de l'asm, mais je crois que dans tous les cas, quand tu arrive a ta condition d'arret, il y a un jmp vers l'instruction juste apres ta boucle, donc le break doit faire exactement la meme instruction (un goto finBoucle quoi)

  20. #20
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Bonjour,
    Désolé pour le retour tardif.

    Citation Envoyé par ShaiLeTroll
    100 utilisateurs en accès concurrentiel, quelques choses de modérer, beaucoup d'utilisateurs en consultation et quelques un en écriture
    Dès que tu as un client qui écrit beaucoup, cela fout la merde !
    Merci ShaiLeTroll.
    Existe-t-il une petite solution d'acces à distance aux tables pdx genre par exemple TeamViewer ?
    Merci.
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/07/2011, 22h09
  2. limit et temps d'execution avec oracle et PHP
    Par dor_boucle dans le forum Oracle
    Réponses: 20
    Dernier message: 10/12/2005, 14h31
  3. Temps d'execution d'une requête
    Par Maglight dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/01/2005, 08h38
  4. [VB.NET] Temps d'éxécution d'une page...
    Par Webman dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/06/2004, 12h20
  5. Connaitre le temps d'execution d'un pgm ?
    Par yacinechaouche dans le forum C
    Réponses: 7
    Dernier message: 27/01/2003, 20h57

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