2016-06-27 9 views
0

論理式の充足度をチェックする機能を持っており、チェック時間も表示します。入力例を入れてみると、実行には約10000ミリ秒(10秒)かかりますが、testTimerに関連するすべてのコード行を削除しようとすると、同じ入力でコードを実行するのに1秒もかかりませんでした?実行時間をテストするjava testTimer

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;} 

元のコードはここにあります:http://grepcode.com/file/repo1.maven.org/maven2/net.sourceforge.owlapi/jfact/1.0.0/uk/ac/manchester/cs/jfact/kernel/DlSatTester.java

+0

私はわからない試みることができます何を求めているのですか?上記の方法をとって、testTimerのすべての使用法をコメントアウトすると、コードは0.5秒で完了します(10秒の「そのまま」)? – GhostCat

+0

はいそれは本当です – Razieh

+0

奇妙な音。何が起こっているのかを知るだけです。私は各行の後にprintln System.currentTimeMillis()を追加します。たぶんあなたのtestTimerにはたくさんのものが含まれていて、reset()は...うまくいっていますか? – GhostCat

答えて

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;} 

これが速い場合(つまり、あなたが求めていたものだった場合)あなたは

関連する問題