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 :

regex quelle librairie est la plus rapide


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 984
    Points : 1 419
    Points
    1 419
    Par défaut regex quelle librairie est la plus rapide
    bonjour, je crée un programme d'analyse de log d'environ 500000 lignes minimum

    je le charge et exécute via http://www.regexpstudio.com/TRegExpr/TRegExpr.html des:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Search := TRegExpr.Create;
        Search.Expression := 'SV packet.*?getstatus';
        Search.Replace(Log.Text, '', True);
    auparavant j'utilisais php en ligne de commande sa prenait environs 2 à 5mins
    mais avec delphi je suis à plus de 10min pour 1/20 des expressions à chercher! donc je peux pas continuer sa mettrais des heures à terme.

    aussi je voudrais vos conseils sur la manière de faire des recherches avec un motif de recherche évolué

    et aussi des recherches et remplacer les résultats avec si on veut une partie du résultat.

    si vous avez des exemples ou liens de composants unités

    avec php sa correspond à
    http://fr.php.net/manual/fr/function.preg-match.php
    http://fr.php.net/manual/fr/function.preg-match-all.php
    http://fr.php.net/manual/fr/function.preg-replace.php

    il doit bien y avoir une correspondance efficace avec delphi
    merci d'avance.
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Euh, ta regexpr est invalide Tu enchaînes un *? Si ça se trouve, ça a un rapport

    Sinon, je n'ai pas connaissance d'autres bibliothèques de regexpr pour Delphi. J'ai toujours entendu dire qu'elle était très bien.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    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 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    surtout qu'il faut déterminer si ce n'est pas l'affichage qui plombe les performance
    sans un bout de code ils nous est difficile de définir d'où peut provenir le problème

    @+ Phil
    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

  4. #4
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 984
    Points : 1 419
    Points
    1 419
    Par défaut
    c'est un exemple, je précise aussi que j'ai lu:
    http://delphi.developpez.com/faq/?page=regex
    mais pas testé toutes les solutions proposé, pour sa si quelqu'un a déjà comparé sa m'aiderai bien à trouvé le plus rapide.
    j'ai trouvé sa aussi qui est exactement ce dont j'ai besoin: http://www.yunqa.de/delphi/doku.php/...ts/regex/index mais c'est payant si j'ai bien vu.

    pour anapurna, j'ai bien tout isolé et c'est la recherche qui bloque pas de doute possible.
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 396
    Points : 640
    Points
    640
    Par défaut
    tu as aussi TPerlRegEx de gratuit, je n'ai fait aucun test par contre

  6. #6
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 984
    Points : 1 419
    Points
    1 419
    Par défaut
    merci, je vais tester aussi. Elle a l'air complète comme celle payante que j'ai trouvé, notamment le chercher remplacer qui manque à RegExpr
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 141
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par ouiouioui Voir le message
    notamment le chercher remplacer qui manque à RegExpr
    Salut,

    en lisant la doc de TRegExpr, j'ai vu qu'il y avait une méthode "subtitute". Ce n'est pas exactement ce que tu veux faire?

    Je me joins à anapurna pour dire : montre-nous un bout de code. Quelle(s) structure(s) de stockage utilises-tu? comment? combien d'objets crées-tu au cours de ta boucle de recherche? etc...
    *LeGEC*

  8. #8
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 984
    Points : 1 419
    Points
    1 419
    Par défaut
    Après test pour moi c'est http://www.regular-expressions.info/delphi.html celle qui me convient merci exoseven.
    on peut tous faire y compris les remplacement avec les captures d'un motif comme en PHP

    TRegExpr est bien mais payant et pour mes besoins TPerlRegEx fait le boulot aussi rapidement.

    par contre sous D2009 impossible à faire fonctionner j'obtiens l'image en pièce jointe
    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
     
      Search := TPerlRegEx.Create(nil);
      try
        try
        Search.Subject := Log.Text;
        Search.RegEx := 'Rcon';
        Search.Replacement := 'test';
        Search.ReplaceAll;
        log.Text := Search.subject;
        Except
        on E : Exception do
          ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
        end;
      finally
        Search.Free;
      end;
    avec le même code sous D2007 aucun soucis je sèche
    si quelqu'un trouve je lui tire mon chapeau moi j'y ai passé mon dimanche... je suppose du à l'unicode je suis bloqué sur un autre programme à cause de sa aussi faut que j'étudie le sujet.
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  9. #9
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Pour utiliser l'ancien codage pour les chaines de caractères, il faut déclarer les chaines en AnsiString et non en String

  10. #10
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 984
    Points : 1 419
    Points
    1 419
    Par défaut
    Citation Envoyé par ero-sennin Voir le message
    Salut,

    Pour utiliser l'ancien codage pour les chaines de caractères, il faut déclarer les chaines en AnsiString et non en String
    Sous D2009 TPerlRegEx utilise UTF8 donc mon log en string UTF16 est converti en 8
    j'ai essayé une variable en AnsiString avec text bidon et j'ai la même erreur.
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  11. #11
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Je pensais que je te serais utile mais non

  12. #12
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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 : 984
    Points : 1 419
    Points
    1 419
    Par défaut
    c'est gentil déjà d'avoir pris la peine de me lire merci

    je précise que sous D2009 Le même composant n'utilise pas la dll pcre mais des fichiers obj alors je sais pas si c'est moi qui bug ou TPerlRegEX
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

Discussions similaires

  1. Quelle solution est la plus rapide?
    Par tiwicom dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 03/10/2011, 17h54
  2. [Copie de Fichier] Quelle méthode est la plus rapide ?
    Par n@n¤u dans le forum Entrée/Sortie
    Réponses: 16
    Dernier message: 04/05/2006, 13h59
  3. int vs double: qui est le plus rapide?
    Par Chewbi dans le forum C++
    Réponses: 23
    Dernier message: 25/03/2006, 02h58
  4. Réponses: 5
    Dernier message: 27/02/2006, 13h46
  5. [Optimisation] Lequel est le plus rapide ?
    Par TOTO32 dans le forum Langage
    Réponses: 10
    Dernier message: 14/08/2005, 23h19

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