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 :

[Performance] IndexOf() ou java.util.regex ?


Sujet :

Langage Java

  1. #1
    Membre actif Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Points : 245
    Points
    245
    Par défaut [Performance] IndexOf() ou java.util.regex ?
    Bounjour.
    Je vuex juste savoir quelle est le methode plus performante. Je sais tres bien que les REs sont beacoup plus puissantes mais moi je ne fais que des recherches simples de type "est-ce qu'un chaine est contenue dans une autre?"
    Comme la merformance est celle qui compte(dans mon cas) je suis pret a utiliser les REs mais est-ce que ca vaut le coup ?

    Merci
    Even the biggest journey, starts with a single step.

  2. #2
    raj
    raj est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 112
    Points : 100
    Points
    100
    Par défaut
    Si tu as uniquement des besoins limités comme tu dit , reste avec les méthodes de la classe String , pour plusieurs raisons :

    1) L'utilisation de RE est plus complexe
    2) Tu auras besoin d'instancier un Pattern et de compiler une règle , ce qui
    est couteux

    L'avantage des RE c'est de compiler une fois une expression complexe
    ( avec un cout en temps ) et de l'executer plusieurs fois ( les match sont eux plus rapide ) .

    Tout dépend de la volumétrie de tests que tu fait et de leur dispersion dans le code ( plus le code est dispersé , plus il faudra que tu compile à chaque fois une règle ou que tu utilise un Singleton et que tu complexifie inutilement ton code ) .

    Voilà

  3. #3
    Membre actif Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Points : 245
    Points
    245
    Par défaut
    raj je te remercie. Je vais utiliser indexOf().
    Juste une derniere info. Quel est l'algorithme de recherche utilise par la methode indexOf() ?
    Even the biggest journey, starts with a single step.

  4. #4
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Citation Envoyé par sources dans le jdk
    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
     
     public int indexOf(int ch, int fromIndex) {
    	int max = offset + count;
    	char v[] = value;
     
    	if &#40;fromIndex < 0&#41; &#123;
    	    fromIndex = 0;
    	&#125; else if &#40;fromIndex >= count&#41; &#123;
    	    // Note&#58; fromIndex might be near -1>>>1.
    	    return -1;
    	&#125;
     
    	int i = offset + fromIndex;
    	if &#40;ch < Character.MIN_SUPPLEMENTARY_CODE_POINT&#41; &#123;
    	    // handle most cases here &#40;ch is a BMP code point or a
    	    // negative value &#40;invalid code point&#41;&#41;
    	    for &#40;; i < max ; i++&#41; &#123;
    		if &#40;v&#91;i&#93; == ch&#41; &#123;
    		    return i - offset;
    		&#125;
    	    &#125;
    	    return -1;
    	&#125;
     
    	if &#40;ch <= Character.MAX_CODE_POINT&#41; &#123;
    	    // handle supplementary characters here
    	    char&#91;&#93; surrogates = Character.toChars&#40;ch&#41;;
    	    for &#40;; i < max; i++&#41; &#123;
    		if &#40;v&#91;i&#93; == surrogates&#91;0&#93;&#41; &#123;
    		    if &#40;i + 1 == max&#41; &#123;
    			break;
    		    &#125;
    		    if &#40;v&#91;i+1&#93; == surrogates&#91;1&#93;&#41; &#123;
    			return i - offset;
    		    &#125;
    		&#125;
    	    &#125;
    	&#125;
    	return -1;
        &#125;


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

Discussions similaires

  1. java.util.regex.Pattern et ThreadLocal
    Par mickael.camelot dans le forum Langage
    Réponses: 5
    Dernier message: 21/12/2011, 10h28
  2. java.util.regex Class Pattern: expression régulières chiffres romains
    Par bipbipman2003 dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 10/06/2011, 15h24
  3. [java.util.regex.Pattern] Regex : contrôler le nombre d'accolades
    Par jmini dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 01/12/2009, 10h33
  4. ResourceBundle - java.util.regex.pattern
    Par babalastar dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 14/02/2008, 14h43
  5. Réponses: 4
    Dernier message: 06/02/2004, 16h23

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