Lucene chronométrer une tâche en Java
Bonjour,
J'ai réussi a calculer le temps d'exécution d'un index en Java avec la fonction System.currentTimeMillis. Cependant j'aimerais effectuer le travail en boucle et faire une moyenne pour obtenir une meilleure estimation du temps. Voici une partie du code fonctionnel.
Code:
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 41 42 43 44 45
| import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.FieldType;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
public class Indexer {
// source location
private final String sourceFilePath = "C:/JAVA/LuceneDemo/gutenberg/totaltxt";
// index file location
private final String indexFilePath = "C:/JAVA/LuceneDemo/gutenberg/index";
private IndexWriter writer = null; // an index writer creates and maintains
// an index
private File indexDirectory = null;
// constructor
private Indexer() throws FileNotFoundException, CorruptIndexException,
IOException {
try {
long start = System.currentTimeMillis();
createIndexWriter(); // it writes data to the index
checkFileValidity(); // finds out the files which needs to be
// indexed
closeIndexWriter(); // close the index writer
long end = System.currentTimeMillis();
System.out.println("Total des documents indexés: "
+ totalDocumentsIndexed());
System.out.println("Ça a pris "+ (end - start) / 1000.0+" secondes.");
} catch (Exception e) {
System.out.println("l'indexation ne peut pas continuer");
}
}
[...] |
Je sais que ma boucle ressemblera à ceci, mais je ne sais pas comment la placer dans mon code sans erreur. J'obtiens une boucle sans fin et je ne peut pas indexer les documents. Merci de votre aide, je me considère encore débutant et maladroit avec Java.
Code:
1 2 3 4 5 6
| long start = System.currenTimeMillis();
for (int k = 0; k < 1000; ++k)
mafonction();
long end = System.currenTimeMillis();
System.out.println("Ça a pris "+ (start-end)/1000.0+" secondes");
System.out.println("Une moyenne de "+ (start-end)/(1000*1000.0)+" secondes."); |