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

 Delphi Discussion :

delete string delimiter optimisation TStringList LineBreak


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 992
    Par défaut delete string delimiter optimisation TStringList LineBreak
    bonjour, je voudrais votre avis sur une fonction qui recherche et efface des occurrence dans une chaine string parce que je voudrais avoir une méthode rapide. merci pour vos remarques.

    chaine original avec en rouge ce que je veux effacer, la partie bleu aussi mais elle varie:
    \deaths_0\2\keyhash_0\a7a2f8801c3ae110aa3fbfee9d143abd\kills_0\0\ping_0\36\playername_0\ pingu\score_0\2\team_0\2\deaths_1\1\keyhash_1\817e7928c5dd97272dbd06be707d2cdf\kills_1\5\ping_1\40\playername_1\Buheheporcodio\score_1\5\team_1\2\deaths_2\0\keyhash_2\945c3160a248eb886dc83e5613d96857\kills_2\8\ping_2\49\playername_2\Torque.idk?\score_2\8\team_2\2\deaths_3\0\keyhash_3\160aad8653fb32fc7f49e29bc9695e1d\kills_3\0\ping_3\22\playername_3\De Man Met De Bril\score_3\0\team_3\2\deaths_4\2\keyhash_4\7c857e50cb6fb289e45f4b000a275f75\kills_4\1\ping_4\91\playername_4\Tom PL\score_4\1\team_4\2\deaths_5\0\keyhash_5\2c52ef003c6179bb9d7d827105ec7961\kills_5\0\ping_5\72\playername_5\NT|Archon\score_5\0\team_5\1\deaths_6\1\keyhash_6\1c3d869b0ca0962b2aa557dfe732dfc1\kills_6\0\ping_6\42\playername_6\Frederick Zoller\score_6\0\team_6\1\deaths_7\1\keyhash_7\f7761448739de0f4b223b8c1a75c2c9e\kills_7\0\ping_7\56\playername_7\Da Stuten Andi\score_7\0\team_7\1\deaths_8\2\keyhash_8\989022adc2dbfb30a269df4eeb09c649\kills_8\0\ping_8\137\playername_8\Twan\score_8\0\team_8\1\deaths_9\1\keyhash_9\f1c1d56abeb6b53015b5641c6b3dee2a\kills_9\2\ping_9\78\playername_9\[301]Fabiolo\score_9\2\team_9\1\deaths_10\0\keyhash_10\376cbea5eff00ae78ef2b0cd14a7770c\kills_10\1\ping_10\69\playername_10\AlFaMaNiAc\score_10\1\team_10\1\deaths_11\2\queryid\4111.1\keyhash_11\6dcba9dc3f85c6e17c6c57e15675c3dd\kills_11\0\ping_11\76\queryid\4111.2\playername_11\ZZZZZZZzzzzzzz\score_11\0\team_11\1\deaths_12\0\keyhash_12\5a1d27377560193263af744ebc90642d\kills_12\6\ping_12\56\playername_12\Wulz\score_12\6\team_12\2\deaths_13\1\keyhash_13\6c8370c10eba124af9ff47a994d8470a\kills_13\1\ping_13\66\playername_13\**Ñ** sergioten\score_13\1\team_13\1\deaths_14\1\keyhash_14\50c5fdf9de1dacf1277d3b680271e65d\kills_14\0\ping_14\66\playername_14\Napl3tek\score_14\0\team_14\1\deaths_15\1\keyhash_15\e999bedeeb4962ba3d6b298b11e2b732\kills_15\4\ping_15\54\playername_15\the Wiesel\score_15\4\team_15\1\deaths_16\1\keyhash_16\2c0228ccbadfb30f7a8b913651107747\kills_16\0\ping_16\40\playername_16\Soldier.Twister\score_16\0\team_16\1\deaths_17\1\keyhash_17\560718e3cf556cc22cb16c1b89dc6f4f\kills_17\0\ping_17\38\playername_17\JMG HUNdkreuzer RATTE\score_17\0\team_17\1\deaths_18\1\keyhash_18\7de8c7329f42eb8566c1c7c7ff79a1ca\kills_18\0\ping_18\94\playername_18\MasterOfInsanity (RUS)\score_18\0\team_18\2\deaths_19\1\keyhash_19\dd930e36a94fb35ab77800dedd1c4557\kills_19\3\ping_19\32\playername_19\Blitzkrieg Bob\score_19\5\team_19\1\deaths_20\0\keyhash_20\937d4a7ce628a8ee054f9fcbfe64be9b\kills_20\0\ping_20\445\playername_20\~yu~\score_20\0\team_20\1\deaths_21\0\keyhash_21\c71f4eeff78a84344d2185f1e8510c16\kills_21\0\ping_21\43\playername_21\molchomor\score_21\0\team_21\1\deaths_22\0\queryid\4111.3
    ma méthode:
    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
    Procedure TForm1.Button3Click(Sender: TObject);
    Var
      sline:  String;
      Search: TStringList;
      I:      Integer;
    Begin
      Search := TStringList.Create;
      Try
        Search.LineBreak := '\';
        Search.Text      := '\deaths_0\2\keyhash_0\a7a2f8801c3ae110aa3fbfee9d143abd\kills_0\0\ping_0\36\playername_0\ pingu\score_0\2\team_0\2\deaths_1\1\keyhash_1' +
          '\817e7928c5dd97272dbd06be707d2cdf\kills_1\5\ping_1\40\playername_1\Buheheporcodio\score_1\5\team_1\2\deaths_2\0\keyhash_2\945c3160a248eb886dc83e5613d96857\kills_2\8\ping_2\49\playername_2\Torque.idk?' +
          '\score_2\8\team_2\2\deaths_3\0\keyhash_3\160aad8653fb32fc7f49e29bc9695e1d\kills_3\0\ping_3\22\playername_3\De Man Met De Bril\score_3\0\team_3\2\deaths_4\2\keyhash_4\7c857e50cb6fb289e45f4b000a275f75' +
          '\kills_4\1\ping_4\91\playername_4\Tom PL\score_4\1\team_4\2\deaths_5\0\keyhash_5\2c52ef003c6179bb9d7d827105ec7961\kills_5\0\ping_5\72\playername_5\NT|Archon' +
          '\score_5\0\team_5\1\deaths_6\1\keyhash_6\1c3d869b0ca0962b2aa557dfe732dfc1\kills_6\0\ping_6\42\playername_6\Frederick Zoller\score_6\0\team_6\1\deaths_7\1\keyhash_7\f7761448739de0f4b223b8c1a75c2c9e' +
          '\kills_7\0\ping_7\56\playername_7\Da Stuten Andi\score_7\0\team_7\1\deaths_8\2\keyhash_8\989022adc2dbfb30a269df4eeb09c649\kills_8\0\ping_8\137\playername_8\Twan' +
          '\score_8\0\team_8\1\deaths_9\1\keyhash_9\f1c1d56abeb6b53015b5641c6b3dee2a\kills_9\2\ping_9\78\playername_9\[301]Fabiolo\score_9\2\team_9\1\deaths_10\0\keyhash_10\376cbea5eff00ae78ef2b0cd14a7770c' +
          '\kills_10\1\ping_10\69\playername_10\AlFaMaNiAc\score_10\1\team_10\1\deaths_11\2\queryid\4111.1\keyhash_11\6dcba9dc3f85c6e17c6c57e15675c3dd\kills_11\0\ping_11\76\queryid\4111.2\playername_11\ZZZZZZZzzzzzzz' +
          '\score_11\0\team_11\1\deaths_12\0\keyhash_12\5a1d27377560193263af744ebc90642d\kills_12\6\ping_12\56\playername_12\Wulz\score_12\6\team_12\2\deaths_13\1\keyhash_13\6c8370c10eba124af9ff47a994d8470a\kills_13\1' +
          '\ping_13\66\playername_13\**Ñ** sergioten\score_13\1\team_13\1\deaths_14\1\keyhash_14\50c5fdf9de1dacf1277d3b680271e65d\kills_14\0\ping_14\66\playername_14\Napl3tek\score_14\0\team_14\1\deaths_15\1\keyhash_15' +
          '\e999bedeeb4962ba3d6b298b11e2b732\kills_15\4\ping_15\54\playername_15\the Wiesel\score_15\4\team_15\1\deaths_16\1\keyhash_16\2c0228ccbadfb30f7a8b913651107747\kills_16\0\ping_16\40\playername_16\Soldier.Twister' +
          '\score_16\0\team_16\1\deaths_17\1\keyhash_17\560718e3cf556cc22cb16c1b89dc6f4f\kills_17\0\ping_17\38\playername_17\JMG HUNdkreuzer RATTE\score_17\0\team_17\1\deaths_18\1\keyhash_18\7de8c7329f42eb8566c1c7c7ff79a1ca' +
          '\kills_18\0\ping_18\94\playername_18\MasterOfInsanity (RUS)\score_18\0\team_18\2\deaths_19\1\keyhash_19\dd930e36a94fb35ab77800dedd1c4557\kills_19\3\ping_19\32\playername_19\Blitzkrieg Bob\score_19\5\team_19\1\deaths_20' +
          '\0\keyhash_20\937d4a7ce628a8ee054f9fcbfe64be9b\kills_20\0\ping_20\445\playername_20\~yu~\score_20\0\team_20\1\deaths_21\0\keyhash_21\c71f4eeff78a84344d2185f1e8510c16\kills_21\0\ping_21\43\playername_21\molchomor\score_21' +
          '\0\team_21\1\deaths_22\0\queryid\4111.3';
        I                := Search.IndexOf('queryid');
        While I <> -1 Do
        Begin
          Search.Delete(I);
          Search.Delete(I);
          I := Search.IndexOf('queryid');
        End;
        memo1.Text := Search.Text;
      Finally
        Search.Free;
      End;
    End;

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    Salut,

    en combien de temps s'exécute ton traitement ? si c'est en ms alors que veut-dire rapide pour toi ? sauf si ton fichier fais des Go.

  3. #3
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Salut,

    Avais-tu pensé à regarder ce que donnerait cela en t'appuyant sur l'algo de recherche à Gilbert :

    http://www.developpez.net/forums/d85...e-boyer-moore/

    @+

  4. #4
    Membre émérite
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 992
    Par défaut
    la chaine peut faire 3x la taille que j'ai mis et plusieurs milliers à la suite 3000. Sa c'est le maximum.

    le prob c'est la partie bleu pour utiliser l'algo de recherche à Gilbert

    sur un core2duo 2.4 je met 3sec pour 2000 passes c'est beaucoup non, parceque sa c'est sans compter la récup de données et la decoupe etc donc si je peut grapiller
    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
    42
    43
    Procedure TForm1.Button3Click(Sender: TObject);
    Var
      Search:    TStringList;
      I, iPasse: Integer;
      cTime:     Cardinal;
    Begin
      cTime := GetTickCount;
      For iPasse := 0 To 2000 Do
      Begin
        Search := TStringList.Create;
        Try
          Search.LineBreak := '\';
          Search.Text      := '\deaths_0\2\keyhash_0\a7a2f8801c3ae110aa3fbfee9d143abd\kills_0\0\ping_0\36\playername_0\ pingu\score_0\2\team_0\2\deaths_1\1\keyhash_1' +
            '\817e7928c5dd97272dbd06be707d2cdf\kills_1\5\ping_1\40\playername_1\Buheheporcodio\score_1\5\team_1\2\deaths_2\0\keyhash_2\945c3160a248eb886dc83e5613d96857\kills_2\8\ping_2\49\playername_2\Torque.idk?' +
            '\score_2\8\team_2\2\deaths_3\0\keyhash_3\160aad8653fb32fc7f49e29bc9695e1d\kills_3\0\ping_3\22\playername_3\De Man Met De Bril\score_3\0\team_3\2\deaths_4\2\keyhash_4\7c857e50cb6fb289e45f4b000a275f75' +
            '\kills_4\1\ping_4\91\playername_4\Tom PL\score_4\1\team_4\2\deaths_5\0\keyhash_5\2c52ef003c6179bb9d7d827105ec7961\kills_5\0\ping_5\72\playername_5\NT|Archon' +
            '\score_5\0\team_5\1\deaths_6\1\keyhash_6\1c3d869b0ca0962b2aa557dfe732dfc1\kills_6\0\ping_6\42\playername_6\Frederick Zoller\score_6\0\team_6\1\deaths_7\1\keyhash_7\f7761448739de0f4b223b8c1a75c2c9e' +
            '\kills_7\0\ping_7\56\playername_7\Da Stuten Andi\score_7\0\team_7\1\deaths_8\2\keyhash_8\989022adc2dbfb30a269df4eeb09c649\kills_8\0\ping_8\137\playername_8\Twan' +
            '\score_8\0\team_8\1\deaths_9\1\keyhash_9\f1c1d56abeb6b53015b5641c6b3dee2a\kills_9\2\ping_9\78\playername_9\[301]Fabiolo\score_9\2\team_9\1\deaths_10\0\keyhash_10\376cbea5eff00ae78ef2b0cd14a7770c' +
            '\kills_10\1\ping_10\69\playername_10\AlFaMaNiAc\score_10\1\team_10\1\deaths_11\2\queryid\4111.1\keyhash_11\6dcba9dc3f85c6e17c6c57e15675c3dd\kills_11\0\ping_11\76\queryid\4111.2\playername_11\ZZZZZZZzzzzzzz' +
            '\score_11\0\team_11\1\deaths_12\0\keyhash_12\5a1d27377560193263af744ebc90642d\kills_12\6\ping_12\56\playername_12\Wulz\score_12\6\team_12\2\deaths_13\1\keyhash_13\6c8370c10eba124af9ff47a994d8470a\kills_13\1' +
            '\ping_13\66\playername_13\**Ñ** sergioten\score_13\1\team_13\1\deaths_14\1\keyhash_14\50c5fdf9de1dacf1277d3b680271e65d\kills_14\0\ping_14\66\playername_14\Napl3tek\score_14\0\team_14\1\deaths_15\1\keyhash_15' +
            '\e999bedeeb4962ba3d6b298b11e2b732\kills_15\4\ping_15\54\playername_15\the Wiesel\score_15\4\team_15\1\deaths_16\1\keyhash_16\2c0228ccbadfb30f7a8b913651107747\kills_16\0\ping_16\40\playername_16\Soldier.Twister' +
            '\score_16\0\team_16\1\deaths_17\1\keyhash_17\560718e3cf556cc22cb16c1b89dc6f4f\kills_17\0\ping_17\38\playername_17\JMG HUNdkreuzer RATTE\score_17\0\team_17\1\deaths_18\1\keyhash_18\7de8c7329f42eb8566c1c7c7ff79a1ca' +
            '\kills_18\0\ping_18\94\playername_18\MasterOfInsanity (RUS)\score_18\0\team_18\2\deaths_19\1\keyhash_19\dd930e36a94fb35ab77800dedd1c4557\kills_19\3\ping_19\32\playername_19\Blitzkrieg Bob\score_19\5\team_19\1\deaths_20' +
            '\0\keyhash_20\937d4a7ce628a8ee054f9fcbfe64be9b\kills_20\0\ping_20\445\playername_20\~yu~\score_20\0\team_20\1\deaths_21\0\keyhash_21\c71f4eeff78a84344d2185f1e8510c16\kills_21\0\ping_21\43\playername_21\molchomor\score_21' +
            '\0\team_21\1\deaths_22\0\queryid\4111.3';
          I                := Search.IndexOf('queryid');
          While I <> -1 Do
          Begin
            Search.Delete(I);
            Search.Delete(I);
            I := Search.IndexOf('queryid');
          End;
          If iPasse = 2000 Then
            memo1.Text := Search.Text;
        Finally
          Search.Free;
        End;
      End;
      cTime := GetTickCount - cTime;
      MessageDlg(Format('Temps: %d ms', [cTime]), mtInformation, [mbOK], 0);
    End;

  5. #5
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    L'autre fois ici, j'avais vu une fonction de recherche super rapide en ASM, mais je ne pense pas avoir noté ce lien

    @+

  6. #6
    Membre émérite
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 992
    Par défaut
    asm je connais que le nom
    si il retourne la position de queryid je fait comment pour effacer aussi la partie bleu qui est variable, 3sec finalement c'est rapide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sqlite - Problème de delete, string primary key
    Par lyes312 dans le forum Android
    Réponses: 6
    Dernier message: 20/07/2011, 15h26
  2. DELETE très lent : Optimisation ?
    Par kornelius dans le forum Développement
    Réponses: 7
    Dernier message: 05/11/2009, 10h07
  3. delete tableau de string
    Par mathher dans le forum C++
    Réponses: 9
    Dernier message: 19/04/2006, 18h00
  4. Optimisation de DELETE
    Par RitonLaBevue dans le forum Requêtes
    Réponses: 5
    Dernier message: 02/11/2005, 15h31
  5. TStringList en array of string
    Par JediKerian dans le forum Langage
    Réponses: 2
    Dernier message: 20/03/2003, 15h37

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