• [^] # \o/ Pierre Tramo

    Posté par . En réponse au message Java et Regexp. Évalué à 4.

    Moi aussi, le passage

    BufferedReader plop = new BufferedReader(new InputStreamReader(doc1.openStream()));
    while((tmp=plop.readLine())!=null)
    {
    html = html + tmp;
    }
    plop.close();

    me parait très sous-optimal, une boucle de lecture sur le InputStreamReader avec écriture vers un StringWriter, ça serait déjà moins violent. Bon, après , l'expression matchée tiens sur une ligne (ce qui a l'air d'être le cas), tester sur chaque ligne du BufferedReader, c'est effectivement encore mieux, ça évite de stocker tout le doc.


    String mediabarre = new String("http://mediabarre.2xmoinscher.com/DVD/liste.asp?strRech=(...(...))");
    String keywords=new String("robin des bois");
    keywords=URLEncoder.encode(jTextField1.getText());
    mediabarre = mediabarre + keywords;

    Déjà, ça faut pas le laisser passer [:totoz]. Un String mediabarre = "http://mediabarre.2xmoinscher.com/DVD/liste.asp?strRech=(...(...))" + URLEncoder.encode(jTextField1.getText()); sera bien plus efficace. En particulier, les String truc = new String("bidule") sont à proscrire, String truc = "bidule" marchera aussi bien.


    while (m.find())
    {
    txt_resultat.setText(txt_resultat.getText().concat("Mediabarre : " + m.group(4) + " pour " + m.group(5) + "\n"));
    }

    Ça aussi, il faut le revoir. La concaténation de chaînes était très coûteuse, les concaténations en boucle sont catastrophiques pour les perf :

    StringBuffer buffy = new StringBuffer();
    // ou StringBuffer buffy = new StringBuffer(txt_resultat.getText());
    while (m.find())
    {
    buffy.append("Mediabarre : ").append(m.group(4)).append(" pour ").append(m.group(5)).append('\n'));
    }
    txt_resultat.setText(buffy.toString());

    devrait légèrement accélérer les choses (le compilo remplace String s = a + b par String s = new StringBuffer(a).append(b).toString();, il faut toujours l'avoir en tête), d'autant plus que l'interface n'aura pas à être raffraichie à chaque fois.

    Voilà, c'est ce qui me saute aux yeux en première lecture.