@nolouds

Как часто измеряют скорость работы программы и как это делают в Java?

If you think you want to use a LinkedList, measure the performance of your application with both LinkedList and ArrayList before making your choice; ArrayList is usually faster.


Это цитата из документации oracle. Должны ли программисты измерять скорость каждого метода? Если нет, то при каких случаях они это делают и как они это делают?
  • Вопрос задан
  • 97 просмотров
Решения вопроса 3
BorLaze
@BorLaze
Java developer
Пока скорость работы устраивает, ничего измерять не надо.

Тогда возникает вопрос "а нельзя ли быстрее" - тогда профайлер (например, этот) в руки и "алга".
Ответ написан
Комментировать
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Измеряют, когда явно тормозить начинает. Для этого существует куча библиотек и тулзов - https://dzone.com/articles/java-performance-troubl...
Ну а самый простой
long startTime = System.nanoTime();
methodToTime();
long endTime = System.nanoTime();

long duration = (endTime - startTime);

или для java8+
Instant start = Instant.now();
Thread.sleep(63553);
Instant end = Instant.now();
System.out.println(Duration.between(start, end)); // prints PT1M3.553S
Ответ написан
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Во-первых, в контексте приведённой вами цитаты никаких измерений не требуется, ведь программист понимает принцип работы структур данных и способен оценить асимптотику, не запуская код. Во-вторых, как уже заметили в других ответах, обычно измерять начинают тогда, когда выявляется проблема производительности. Для измерений используют профилирование. В некоторых проектах проблемы производительности выявляют в результате нагрузочного тестирования, являющегося частью релизного цикла.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы