Ameliorer le codse java

cs_betoile Messages postés 28 Date d'inscription vendredi 11 juin 2010 Statut Membre Dernière intervention 22 mai 2013 - 15 juin 2011 à 17:47
 Utilisateur anonyme - 16 juin 2011 à 23:30
bonjour tout le monde voila que mon code met trop de temps pour s'executer esque c possible de l'ameliorer ,ce code parcours un repertoire de fichier et parse chaque document ...!!
esque cle faite de le connecté a une base de données,?


public class prop extends parseur {


public prop(String resulat) throws SAXException {

// TODO Auto-generated constructor stub

//public static void main(String args[], String resulat) throws java.io.IOException{
float y = 0 ;

try{
Statement st = connection.getInstance().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
Statement st1 = connection.getInstance().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
//Statement st=conn.createStatement();


//Creation d'un objet Statement



File dir = new File("D:\\Doc_Xml");

String[] children = dir.list();
if (children == null) {
System.out.println("Directory does not exist or is not a Directory");
} else {

String phrase="D:\\Doc_Xml\"; //fixer le path
/* System.out.print("donnez le path : ");
BufferedReader clavier = new BufferedReader(new InputStreamReader(System.in));
String phrase = clavier.readLine(); */



for (int i=0; i<children.length; i++){

// Get filename of file or directory
String filename = children[i];

//System.out.printf("le filename est"+filename);
//System.out.println(" ");
ResultSet res = st.executeQuery("SELECT score,nom_doc FROM "+resulat+" WHERE(nom_doc='"+filename+"')");

//On récupère les MetaData
{ while(res.next()){
ResultSetMetaData resultMeta = res.getMetaData();
System.out.println("\t" + res.getString("nom_doc") +"\t\t\t" + res.getFloat("score") + "\t | ");
y=res.getFloat("score");
// System.out.println("y contient"+y);
}



try {

DefaultHandler handler = new parseur();

XMLReader parser = XMLReaderFactory.createXMLReader();
parser.setContentHandler(handler);

parser.parse(phrase+filename);

//st.executeUpdate("delete FROM doc_score");

// while(res.next()){


//z=(float) (y+somme( res.getFloat("score")));
//}

System.out.println("score de'"+filename+"' est: "+y);
System.out.println("la somme des scores de ses attributs:"+z);

double t=(y+z);
//st1.executeUpdate("ALTER TABLE doc_rsv(scoref)=('"+t+"')");
System.out.println("score finale du doc:"+t);


st1.executeUpdate("UPDATE "+resulat+" SET scoref='"+t+"' WHERE (nom_doc='"+filename+"') ") ;
//st1.executeUpdate("UPDATE doc_rsv SET scoref='"+t+"' WHERE score='"+y+"' ");

//System.out.println("vider la table des nouveaux scores");
//ResultSet r0 = st.executeQuery("SELECT(doc_rsv.nom_doc,doc_rsv.score_doc,doc_rsv.scoreF)VALUES('"+filename+"','"+y+"','"+t+"')");


//affiche aff=new affiche();




System.out.println("**********************^_^***************************");//aucun lien
System.out.println("");
z=0;
}
catch (SAXException e) {e.printStackTrace();
} catch (IOException e) {e.printStackTrace();
}



}/* System.out.println("la somme est :"+y);*/
}
m no=new m(resulat);
}

}catch (Exception e){
e.printStackTrace();
}

}

public static float somme(float x){
float som=0;
som=som+x;
return som;
}

}

aidez moi svp merci bien

2 réponses

Utilisateur anonyme
16 juin 2011 à 02:23
Bonsoir

Désolé pour les fautes d'accents, je vous réponds depuis mon smartphone Android. Je vous recommande d'utiliser JVisualVM pour savoir quelles parties du code consomment le plus de temps CPU. Cet outil est fourni avec le JDK dans le répertoire bin. Cordialement.

T.U.E.R yeah! vive java
0
Utilisateur anonyme
16 juin 2011 à 23:30
Salut,

Déjà commence par utiliser les balises pour afficher plus visiblement le code.
Ensuite, respecte les normes Java dont le formatage par exemple (camelCase).

Sinon, je pense que c'est long car tu réalises plusieurs exécutions de requêtes dans une boucle. Si ton dossier a grand nombre de sous dossiers, ça te fait tout autant de requêtes...


--
Pylouq (actuellement jongleur de clavier AZERTY et de clavier QWERTZ)
0
Rejoignez-nous