2017-04-18 1 views
0

Ich arbeite am Vergleich eines binären Suchbaums mit einem AVL und möchte die usr/sys Zeit für einen Suchvorgang auf beiden durchgeführt sehen. Die Sache ist: Ich habe eine Anwendung (SearchBST.java/SearchAVL.java), die eine Datei einliest und die Bäume bevölkert und sie dann durchsucht. Ich möchte wissen, ob ich die usr/sys-Zeit für nur die Suche statt der gesamten Sache (Einfügen und Suchen) überprüfen kann. Es scheint mir, dass die Einfügung verursacht, dass die AVL-Zeit (unter Verwendung von "time java SearchAVL") ungefähr die gleiche ist wie die der BSTs.Wie bekomme ich die Zeit für einen Teil eines Programms in Unix

Sollte ich es anders machen (so dass das Auffüllen des Baumes keinen Einfluss auf die Gesamtzeit hat)? Ich werde so schnell wie möglich einen Code posten, aber ich wollte sehen, ob jemand in der Zwischenzeit irgendwelche Gedanken hat.

Antwort

0

Warum messen Sie nicht die Zeit in Ihrer Anwendung?

// 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"); 

Dies wird die Wanduhr Zeit nur drucken, aber da du so keine Thread.sleep(...) Befehle oder Dinge haben nicht in Ihrem Programm sollte die Wanduhr Zeit nicht viel von dem Benutzer Zeit abweichen.

+0

Das wird ihnen nicht den Benutzer/sys Aufschlüsselung sagen (obwohl Sie nicht viel Zeit in einer Baumsuche erwarten würde). Siehe auch [* Wie schreibe ich einen korrekten Mikro-Benchmark in Java? *] (Http://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-benchmark-in-java) –

+0

Es ist mir gerade in den Sinn gekommen, einfach die Zeit für die Population zu nehmen, dann nimm dir die Zeit für Pop + Suche, dann berechne den Unterschied. Dies fühlt sich nicht als die sauberste, interessanteste Lösung an, aber ich kann nicht verstehen, warum es nicht von der Stange funktionieren würde. –

+0

Unabhängig von den oben genannten, scheint es, als wäre das "Mach es im Programm" der Weg zu gehen. Vielen Dank! (Ich werde wahrscheinlich Instant verwenden). –

Verwandte Themen