Итак, в настоящее время я пытаюсь проверить, сколько времени занимает заполнение AVLTree различными объемами данных. При добавлении небольших объемов данных в дерево, таких как 16 объектов или 2824 объекта, моя программа может работать в течение нескольких секунд (я использую свой телефонный секундомер для записи времени). Однако когда я добавляю ~ 11000 объектов в дерево, это занимает около 28 секунд, а когда я пытаюсь добавить 250000 объектов в дерево, моя программа, кажется, никогда не завершает работу.
В программе я добавил переменную, которая хранит текущее время в начале кода, и другую переменную, которая также хранит текущее время в конце, чтобы я мог приблизительно рассчитать, сколько времени потребовалось программе для запуска. Что интересно, так это то, что когда я заполнил AVLTree 2824 объектами, он говорит, что для запуска потребовалось ~ 1,56 секунды, а когда я заполнил AVLTree ~ 11000 объектов, очевидно, для запуска потребовалось то же время.
Использование моего секундомера, чтобы увидеть, что для запуска потребовалось ~ 28 секунд, по сравнению с ~ 1,56 секунды, которые моя программа сообщает мне, что это действительно затрудняет понимание того, что действительно вызывает проблему. Кстати, компилятором, который я сейчас использую, является Eclipse Java Oxygen.
public class AVLTreeTester {
public static void main(String[] args) {
long start = System.currentTimeMillis();
AVLTree<IPAddress, URL> avlTree = new AVLTree<IPAddress, URL>();
BufferedReader br = null;
String line;
try {
br = new BufferedReader(new FileReader("src/data/top-
250k.txt"));
while ((line = br.readLine()) != null) {
String[] values = line.split("\t");
IPAddress newIP = new IPAddress(values[1]);
URL newURL = new URL(values[0]);
avlTree.add(newIP, newURL);
}
}catch (IOException e) {
e.printStackTrace();
}
avlTree = null;
long stop = System.currentTimeMillis();
double time = stop - start / 1000;
System.out.println("Took: " + time + " second(s)");
}
}