2017-04-18 5 views
0

私はバイナリ検索ツリーをAVLと比較しており、両方で検索操作のためのusr/sys時間を見たいと思っています。これは、ファイルを読み込んでツリーを作成してから検索するアプリケーション(SearchBST.java/SearchAVL.java)です。私はusr/sysの時間をチェックすることができるかどうかを知りたいのは、全体を検索する代わりに検索するだけです(挿入と検索)。それは挿入がAVLの時間(「time java SearchAVL」を使用して)をBSTとほぼ同じにする原因になっているようです。Unixでプログラムの一部にかかる時間を取得するには

私はそれを違うようにしなければならないのですか?(ツリーを作成しても全体の時間に影響を与えないようにしてください)できるだけ早くコードを投稿しますが、誰かが思考を持っているかどうかを確認したいと思っていました。

答えて

0

あなたのアプリケーションの中で時間を測定してみませんか?

// Read file to a temporary collection or array 
// to prevent meassuring disk performance instead of tree performance 

long t = System.nanoTime(); 
// populate tree 
long tPopulate = System.nanoTime() - t; 

t = System.nanoTime(); 
// search tree 
long tSearch = System.nanoTime() - t; 

System.out.println("tPopulate = " + tPopulate + " ns"); 
System.out.println("tSearch = " + tSearch + " ns"); 

これは、ウォールクロック時間を出力しますが、あなたはあなたのプログラムのそのような任意のThread.sleep(...)コマンドやものを持っていないので、壁時計の時間は、ユーザーの時間から多くの異なるべきではありません。

+0

これで、ユーザー/ sysの内訳はわかりません(ただし、ツリー検索ではsys時間はあまりありません)。 [* Javaで正しいマイクロベンチマークを書くにはどうすればいいですか?*](http://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-benchmark-in-java ) –

+0

実際には、人口のためだけに時間をとってから、ポップ+検索の時間をかけて差を計算するのが私に起こりました。これは最もクリーンで、最も興味深い解決策のようには感じられませんが、なぜバットではうまくいかないのか分かりません。 –

+0

上記にかかわらず、 "プログラムでやる"のようになるかもしれません。ありがとう! (私はおそらくインスタントを使用します)。 –

関連する問題