2016-06-27 12 views
0

Ich habe eine Funktion, die die Sättigung eines logischen Ausdrucks prüft und auch die Prüfzeit anzeigt. Ich gebe ein Eingabebeispiel und es zeigt, dass es etwa 10000 Millisekunden (10 Sekunden) dauert, aber warum, wenn ich versuche, alle mit dem testTimer verbundenen Codezeilen zu entfernen, dauerte es nur weniger als eine Sekunde, um den Code mit der gleichen Eingabe auszuführen ?java testTimer, um die Ausführungszeit zu testen

protected boolean runSat() { 
     testTimer.start(); 
     boolean result = checkSatisfiability(); 
     testTimer.stop(); 
        options.getLog().print("\nChecking time was ", testTimer.getResultTim    e()," milliseconds"); 
     testTimer.reset(); 
     finaliseStatistic(); 
     if (result) {cGraph.print(options.getLog());}return result;} 

Der ursprüngliche Code ist hier verfügbar: http://grepcode.com/file/repo1.maven.org/maven2/net.sourceforge.owlapi/jfact/1.0.0/uk/ac/manchester/cs/jfact/kernel/DlSatTester.java

+0

Ich bin nicht sicher was du fragst. Wollen Sie damit sagen, dass, wenn Sie die obige Methode anwenden und Sie alle Verwendungen von testTimer auskommentieren, Ihr Code in 0,5 Sekunden (gegenüber 10 Sekunden "wie es ist") fertig ist? – GhostCat

+0

ja das ist wahr – Razieh

+0

Klingt komisch. Nur um eine Idee zu bekommen, was vor sich geht; Ich würde println System.currentTimeMillis() nach jeder Zeile hinzufügen. Vielleicht enthält dein TestTimer viel Zeug und Reset() ... macht das viel Arbeit? – GhostCat

Antwort

0
protected boolean runSat() { 
     long startTime = System.nanoTime(); 
     boolean result = checkSatisfiability(); 
     long endTime = System.nanoTime(); 
  options.getLog().print("\nChecking time was ", (endTime - startTime)/1000000," milliseconds"); 
     testTimer.reset(); 
     finaliseStatistic(); 
     if (result) {cGraph.print(options.getLog());}return result;} 

Sie könnten versuchen, wenn dies schneller ist (wenn das war, was Sie fragen)

Verwandte Themen