В рамках школьного упражнения я хотел бы сравнить и сравнить алгоритмы сортировки с упражнением Java.Сортировка во второй раз быстрее
Я сам реализовал алгоритмы сортировки, и мы сортируем объекты класса Person
, который реализует интерфейс Comparable
.
Насколько я знаю, но почему я не могу объяснить, почему во время первого вызова методов сортировки сортировка занимает больше времени, чем при последующих вызовах?
Нижеследующий результат представляет мои результаты.
Лучший, худший и Средно относятся к несортированному массиву, который передается метода сортировки:
- Лучшими: массив уже отсортированный
- Худшие: массив отсортирован в обратном порядке
- Avg: объекты в массиве в случайном порядке
Это мой выход:
1-call of the sorting methods
InsertionSort Best:1799ms Worst:78ms Avg:789ms
MergeSort Best:10ms Worst:3ms Avg:5ms
2-call of the sorting methods
InsertionSort Best:1065ms Worst:39ms Avg:691ms
MergeSort Best:3ms Worst:2ms Avg:5ms
3-call of the sorting methods
InsertionSort Best:1066ms Worst:39ms Avg:692ms
MergeSort Best:3ms Worst:2ms Avg:5ms
4-call of the sorting methods
InsertionSort Best:1065ms Worst:39ms Avg:691ms
MergeSort Best:3ms Worst:2ms Avg:5ms
Является ли JVM любой оптимизацией при последующих вызовах?
Я озадачен и очень признателен за любую помощь!
Редактировать: Спасибо за предложения и ответы до сих пор! Чтобы сделать несколько точек понятными - каждый из вызовов в моем выводе относится к времени, которое требуется для полной сортировки!
После каждой сортировки я снова делаю новый вызов с массивами UNSORTED!
Мой исходный код может быть загружен как затмение проекта в виде архива, по следующей ссылке: Dropbox dropbox link to eclipse project.zip
P.S. У меня нет опыта работы с профайлерами - если бы вы могли указать мне на учебное пособие или так было бы здорово.
Можете ли вы разместить код? –
Вы повторно перетасовывали данные между прогонами? – user1676075
Трудно сказать без кода; и, например; это может зависеть от того, как вы измеряете. Есть довольно некоторые подводные камни, с которыми можно столкнуться в отношении измерения производительности. Иногда, например, компилятор Java точно вовремя делает интересные вещи. – GhostCat