Partage
  • Partager sur Facebook
  • Partager sur Twitter

optimisation regex

Sujet résolu
    5 août 2009 à 13:38:02

    Bonjour, j'ai des questions sur la rapidité de mon script pour des cas d'utilisations de regex :
    1) Je dois créer une regex que je changerai plus tard, pour la création :
    Quel est le plus rapide entre :
    • new RegExp()
    • /-/ on met n'importe quoi à l'intérieur

    En temps normal, l'utilisation de slashes est plus rapide, mais si on n'indique aucun paramètres lors de la création ? Car avec les antislashes on est obliger d'y mettre quelque chose, sinon ça fait un commentaire :euh:
    2) J'ai une boucle et un objet RegExp crée avec une des technique précédente, je dois modifier la regex à chaque passage de boucle...
    Quel est le plus rapide entre :
    • créer un nouvel objet RegExp (avec raccourci des slashes) et l'assigner à la variable
    • recompiler la regex, à l'aide de la fonction RegExp.compile(str[, params])

    Merci de vos réponses ;)

    PS : pour l'instant j'utilise :
    new RegExp()
    et RegExp.compile(str[, params])
    • Partager sur Facebook
    • Partager sur Twitter
      6 août 2009 à 11:51:33

      A moins que tu ne fasses plusieurs milliers de boucles, les temps sont identiques je pense.

      Le mieux d'après moi est d'utiliser var maReg = /une Regex/; et de garder new RegExp juste si on a une variable à mettre dans la reg.

      Ensuite pour ta boucle, j'avoue ne pas connaitre .compile, j'ai toujours fait avec une nouvelle regex


      Et créé une regex vide.. je n'en vois pas trop l'intérêt.


      Edit:

      var tmp;
      var t1 = new Date();
      
      for (var i = 0; i < 10000; i++) {
      	tmp = /nawak/;
      	tmp.test('nono');
      }
      /*******************************/
      /*******************************/
      var t2 = new Date();
      
      for (var ii = 0; ii < 10000; ii++) {
      	tmp = new RegExp('nawak', '');
      	tmp.test('nono');
      }
      
      /*******************************/
      /*******************************/
      var t3 = new Date();
      
      tmp = new RegExp();
      for (var iii = 0; iii < 10000; iii++) {
      	tmp.compile('nawak', '');
      	tmp.test('nono');
      }
      
      /*******************************/
      /*******************************/
      var t4 = new Date();
      
      document.write((t2 - t1) + '<br/>');
      document.write((t3 - t2) + '<br/>');
      document.write((t4 - t3) + '<br/>');
      


      Résultat:
      3ms
      17ms
      48ms
      • Partager sur Facebook
      • Partager sur Twitter
        6 août 2009 à 12:12:22

        Merci, comme ça j'ai vu que je faisait tout ce qui ne fallait pas faire ! :lol:
        • Partager sur Facebook
        • Partager sur Twitter

        optimisation regex

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown