2017-04-18 5 views
0

바이너리 검색 트리를 AVL과 비교하고 양쪽에서 수행 한 검색 작업에 대한 usr/sys 시간을보고 싶습니다. 문제는 다음과 같습니다. 파일을 읽고 트리를 채우고 검색하는 응용 프로그램 (SearchBST.java/SearchAVL.java)이 있습니다. 나는 내가 usr/sys 시간을 검사 할 수 있는지를 알고 싶다. (삽입과 검색) 대신 전체를 검색하는 것이다. 그것은 삽입에 AVL의 시간 ("time java SearchAVL"을 사용)이 대략 BST의 것과 같아지는 것 같습니다.유닉스에서 프로그램의 일부 시간을 얻는 방법

트리를 채우는 것이 전체 시간에 영향을 미치지 않도록 다르게해야합니까? 가능한 한 빨리 코드를 게시 하겠지만, 누군가가 잠시 생각을 갖고 있는지 알고 싶었습니다.

답변

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

위의 내용과 관계없이 "프로그램에서 수행하십시오"는 방법이 될 것 같습니다. 감사! (나는 아마도 Instant를 사용할 것이다). –