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

WinDev Discussion :

Vitesse d'exécution d'un code


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 109
    Par défaut Vitesse d'exécution d'un code
    Bonjour,

    Ma question peu paraître un peu bête mais, un code peut il être exécuté à une vitesse différente en fonction d'un PC ?

    Ex: avec un Pentium 4 dual core et un i7

    Mon code ci-dessous s'exécute en 9 sec. Je voudrais diviser le temps par deux.
    9 sec avec mon Pentium 4 dual core 3 Ghz et 3 Go ram

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    lxls_fichierExcel=xlsOuvre("C:\MO.xls",xlsEcriture)
    SI ErreurDétectée = Faux ALORS
    	Li_nbligneFichierExcel=1
    	ls_contenuFichierTexte= fChargeTexte("C:\SPE.txt")
    	POUR TOUTE CHAINE ls_ligneFichierTexte DE ls_contenuFichierTexte SEPAREE PAR RC
    		toto=Gauche(ls_ligneFichierTexte,12)
    		tata=Droite(ls_ligneFichierTexte,10)
    		lxls_fichierExcel[Li_nbligneFichierExcel,"A"]=toto
    		lxls_fichierExcel[Li_nbligneFichierExcel,"B"]=tata
    		Li_nbligneFichierExcel++
    	FIN
    	// Lecture d'une cellule pour test
    	ResDonnée= xlsDonnée(lxls_fichierExcel,2,26,Faux)
    	xlsSauve(lxls_fichierExcel)
    	xlsFerme(lxls_fichierExcel)
     
    FIN
    // Ouverture d'un fichier externe
    IDFichier = fOuvre("C:\INF.txt", foLectureEcriture)
    // Écriture dans ce fichier
    ResEcriture = fEcrit(IDFichier, ResDonnée)
    ls_contenuFichierTexte2= fChargeTexte("C:\INF.txt")
    POUR TOUTE CHAINE Ls_ligneFichierTexte2 DE ls_contenuFichierTexte2 SEPAREE PAR RC
    FIN
     
     
    SI ls_contenuFichierTexte2 = "1" ALORS
    	TableInsèreLigne(TABLE_TY,1, 1)
    	TableSupprime(TABLE_TY, 2 )
    	TableEnregistre(TABLE_TY)
     
    FIN
     
     
     
    SI ls_contenuFichierTexte2 = "1" ALORS
    	TableInsère(TABLE_De,+TAB+ls_contenuFichierTexte2)
    	TableSupprime(TABLE_De,2)
    	TableEnregistre(TABLE_De)	
    FIN

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Par défaut
    Bonsoir

    Il y aura certainement une différence avec un PC plus puissant : CPU, mémoires et accès disque seront en principe plus performants.
    Maintenant, dans quelles proportions ?

    Votre code ne me paraît pas pouvoir être fort optimisé.
    Reste la longueur du texte que vous chargez et le nombre de lignes (RC) que cela représente, ce qui se traduira en nombre d'itérations de votre boucle.

    Voyez en tout cas avec l'analyseur de performances.

    Pour votre code, vous pouvez "épargner" deux affectations intermédiaires inutiles, mais (désolé) cela ne va pas booster votre code de manière miraculeuse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		toto=Gauche(ls_ligneFichierTexte,12)
    		tata=Droite(ls_ligneFichierTexte,10)
    		lxls_fichierExcel[Li_nbligneFichierExcel,"A"]=toto
    		lxls_fichierExcel[Li_nbligneFichierExcel,"B"]=tata
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            lxls_fichierExcel[Li_nbligneFichierExcel,"A"]=Gauche(ls_ligneFichierTexte,12)
    	lxls_fichierExcel[Li_nbligneFichierExcel,"B"]=Droite(ls_ligneFichierTexte,10)

  3. #3
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 109
    Par défaut
    Et dans le cas d'un processeur 2 ou 4 core.

    Est il possible par exemple d'exécuter un code sur core 1 dans le cas d'un dual et
    d'exécuter un second code sur core 2 car il s'agit de deux processeur ?

  4. #4
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 204
    Par défaut
    Il faut alors exécuter le code dans un thread séparé.

  5. #5
    Membre Expert Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Par défaut
    Il y aurait peut être une optimisation à faire en lisant ton fichier .txt pour remplir une table et en exportant la table dans le fichier Excel avec la fonction TableVersExcel.
    Aucune idée si ça va accélerer le processus, mais ça peut valoir le coup d'essayer...

    edit: Et pourquoi pas faire pareil en chargeant tout le texte dans une variable d'un coup et ensuite traiter la variable...

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Par défaut
    Citation Envoyé par Tober Voir le message
    edit: Et pourquoi pas faire pareil en chargeant tout le texte dans une variable d'un coup et ensuite traiter la variable...
    Ce qu'elle fait déjà en ligne 4, si j'ai bien compris votre proposition.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    4:	ls_contenuFichierTexte= fChargeTexte("C:\SPE.txt")

  7. #7
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 438
    Par défaut
    Mon code ci-dessous s'exécute en 9 sec. Je voudrais diviser le temps par deux.
    9 sec avec mon Pentium 4 dual core 3 Ghz et 3 Go ram
    Total Fenêtre "FEN_TEST" 1 1 s 1 ms 99.784559
    Traitement interne au moteur d'exécution 1 2 ms 0.215441
    L'est fort l'analyseur de performance, il fait passer le temps d'exécution de 9 secondes à 1 seconde

    Plus sérieusement, il faut analyser en détail le retour de l'analyseur de performance, le temps de traitement de chaque ligne...

    Tatayo.

  8. #8
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 109
    Par défaut
    Toujours très long avec les fonctions Excel...

Discussions similaires

  1. Réponses: 8
    Dernier message: 01/01/2008, 20h38
  2. Vitesse d'exécution d'un code en C.
    Par criga dans le forum C
    Réponses: 8
    Dernier message: 11/12/2007, 05h17
  3. Interrompre l'exécution d'un code
    Par pgz dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/05/2006, 17h39
  4. Réponses: 4
    Dernier message: 02/04/2006, 18h42
  5. [Système] Forcer l'exécution d'un code php
    Par florent dans le forum Langage
    Réponses: 4
    Dernier message: 02/12/2005, 13h13

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