Я работаю над проектом, который генерирует тесты для данной структуры данных в Java. На данный момент он выбирает 5 случайных функций для выполнения 2 различных реализаций списков и времени. Несколько секунд (10 или 20), прежде чем внезапно опуститься до того, что началось. Я проверил, сколько памяти используется, и похоже, что использование памяти увеличивается, прежде чем снова упасть вниз, одновременно возвращается к нормальной жизни. Дальнейшее тестирование я обнаружил, что это происходит только тогда, когда тесты включают «добавить» и «удалить» с индексом где -то в середине в связанном списке, однако с списком массива я не могу найти шаблон. < /P>
< P> Я ожидаю, что эти функции займет больше времени, однако я не ожидал, что они увеличатся во времени, когда размер списка останется в основном одинаковым. Возможно ли это что -то связано с коллекционером мусора, или я делаю что -то странное. Извините, если я плохо объяснил. Дайте мне знать, если мне нужно что -нибудь уточнить < /p>
import java.util.LinkedList;
import java.util.Random;
public class Tester {
private LinkedList list = new LinkedList();
private int aim_len = 100000;
private int reaction = 500;
private void react() {
while(Math.abs(list.size() - aim_len) > reaction) {
if(list.size() - aim_len > 0)
for(int i = 0; i < reaction; i++)
list.remove(0);
else
for(int i = 0; i < reaction; i++)
list.add(0);
}
}
public Tester() {
Random rand = new Random();
// Loop forever
while(true) {
// Keep list roughly the same size.
react();
// Run 500 tests.
long start = System.nanoTime();
for(int i = 0 ; i < 500; i++) {
list.add(rand.nextInt(list.size()), 0);
list.remove(rand.nextInt(list.size()));
}
System.out.println(Math.log(System.nanoTime() - start));
}
}
public static void main(String[] args) {
new Tester();
}
}
< /code>
Извините за этот действительно уродливый код. Это, по -видимому, имеет тот же эффект.>
Подробнее здесь: https://stackoverflow.com/questions/794 ... performace