@artemfisher

Как правильно определить время выполнения программы и размер используемой памяти?

Добрый день!

Участвую в хакатоне, там есть следующие ограничения:
Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт

Определяю время работы приложения с помощью Instant, а размер используемой памяти как Runtime.totalMemory() - Runtime.freeMemory().
Насколько эти способы правильны?

Instant start = Instant.now(); // момент начала работы программы
		
Runtime runtime = Runtime.getRuntime();
		
long run = runtime.totalMemory() - runtime.freeMemory(); // вычисляем сколько памяти использует программа		
		
String [][] ar = new String [2][];
ar[0] = new String[2];
ar[1] = new String[1];	
		
ar[0][0] = "ar 0 0";
ar[0][1] = "ar 0 1";
		
ar[1][0] = "ar 1 0";
		
Instant finish = Instant.now();	// момент окончания работы программы	
	
Duration.between(start, finish).toNanos(); // вычисляем время работы программы


Duration.between(start, finish).toNanos(); - в моем случае возвращает 0. Это верно? Программа может выполняться быстрее одной наносекунды?
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Использовать профайлеры типа VisualVM, FR/JMC и async-profiler или JMH.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы