티스토리 뷰
실행시간 측정하는 3가지 방법
StopWatch - spring
StopWatch stopWatch = new StopWatch(); stopWatch.start(); //... //... //... stopWatch.stop(); System.out.println("소요시간:"+stopWatch.getTotalTimeMillis()+"ms"); System.out.println(stopWatch.prettyPrint());* apache comm-lang3에서도 제공되지만 둘다 thread safe 하지 않음
Instant
Instant stime = Instant.now(); //... //... //... Instant etime = Instant.now(); System.out.println("소요시간:"+Duration.between(stime, etime).toMillis()+"ms");System.currentTimeMillis()
long stime = System.currentTimeMillis(); //... //... //... System.out.println("소요시간:"+(System.currentTimeMillis()-stime)+"ms");목차
자바 코드 실행 시간 측정하기
밀리 초 측정하기
Java에서 기본적으로 제공하는 메서드중 System.currentTimeMillis 메서드를 이용하면 현재 시간을 밀리세컨드 단위로 출력할 수 있다.
다음과 같이, long 타입 변수 startTime, endTime에 각각 currentTimeMillis() 값을 입력받도록 하고, 두 시간의 차이를 밀리 세컨드 단위로 구하면 곧 코드 실행 시간이 된다.
public static void main(String[] args) { long startTime = System.currentTimeMillis(); // 코드 시작 시간 // 코드 ... long endTime = System.currentTimeMillis(); // 코드 끝난 시간 long durationTimeSec = endTime - startTime; System.out.println(durationTimeSec + "m/s"); // 밀리세컨드 출력 System.out.println((durationTimeSec / 1000) + "sec"); // 초 단위 변환 출력 }나노 초 측정하기
만일 좀더 자세한 시간을 측정하고 싶다면 nanoTime() 메서드를 이용해 밀리초 가 아닌 나노초를 구해서 해도 된다.
public static void main(String[] args) { long startTime = System.nanoTime(); // 코드 시작 시간 // 코드 ... long endTime = System.nanoTime(); // 코드 끝난 시간 long durationTimeSec = endTime - startTime; System.out.println(durationTimeSec + "n/s"); // 나노세컨드 출력 }잘못된 내용이 있으면 댓글로 피드백 부탁드립니다 :)
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.
- JAVA에는 시간 관련 메소드가 매우 많음
- 더 많은 방법들이 있겠지만 몇개의 방법만 정리해봄
프로그램 실행시간 측정 방법
- 프로그램의 실행시간을 측정하는 방법은 프로그램의 실행 시작과 실행 끝부분에 현재시간을 측정해서 두 시간의 차이를 구해주면 됨
현재시간 측정 방법
- System.currentTimeMillis(), System.nanoTime()
- Instant, Duration
- LocalDate.now()
- 등 매우 다양한 방법이 존재
특정시간 대기
- 프로그램 실행 중 몇 초 동안 대기하기를 원할 수 있음
- 이 때 가능한 방법으로는
- Thread.sleep()
- TimeUnit.SECONDS.sleep()
등의 방법이 존재
Thread.sleep() 사용 시, 파라미터로 들어가는 숫자는 ms가 기준. Thread.sleep(1000)은 1초 대기를 뜻함
TimeUnit.SECONDS.sleep() 사용 시, java.util.concurrent.TimeUnit을 import 해줘야 하고, SECONDS 대신 DAYS, HOURS, MINUTES, MILLISECONDS 등 다양하게 사용 가능
그리고 위 두 방법 사용 시 try - catch로 묶어줘야 에러가 발생하지 않음
System.currentTimeMillis(), System.nanoTime()으로 프로그램 실행시간 측정 예제 ( TimeUnit.SECONDS.sleep() 으로 대기 )
package TimeTest; import java.util.concurrent.TimeUnit; public class TimeMain { public static void main(String[] args) { long StartTime1 = System.currentTimeMillis(); long StartTime2 = System.nanoTime(); System.out.println("프로그램 시작!"); try { TimeUnit.SECONDS.sleep(10); }catch(Exception e) { e.printStackTrace(); } long EndTime1 = System.currentTimeMillis(); long EndTime2 = System.nanoTime(); System.out.println("프로그램 종료!"); System.out.println("==================="); System.out.println("프로그램 실행시간"); System.out.println("currentTimeMillis() : " + (EndTime1 - StartTime1)/1000.0 + "초"); System.out.println("nanoTime() : " + (EndTime2 - StartTime2)/1000000000.0 + "초"); } }결과
프로그램 시작! 프로그램 종료! =================== 프로그램 실행시간 currentTimeMillis() : 10.007초 nanoTime() : 10.006815125초Instant, Duration을 사용한 프로그램 실행시간 측정 예제
package TimeTest; import java.time.Duration; import java.time.Instant; import java.util.concurrent.TimeUnit; public class TimeMain { public static void main(String[] args) { Instant StartTime = Instant.now(); System.out.println("프로그램 시작!"); try { TimeUnit.SECONDS.sleep(10); }catch(Exception e) { e.printStackTrace(); } Instant EndTime = Instant.now(); System.out.println("프로그램 종료!"); System.out.println("==================="); System.out.println("프로그램 실행시간"); System.out.println(Duration.between(StartTime, EndTime).toSeconds() + "초"); } }결과
프로그램 시작! 프로그램 종료! =================== 프로그램 실행시간 10초LocalDateTime()으로 프로그램 실행시간 측정 예제 ( Thread.sleep() 으로 대기)
package TimeTest; import java.time.Duration; import java.time.LocalDateTime; public class TimeMain { public static void main(String[] args) { LocalDateTime StartTime = LocalDateTime.now(); System.out.println("프로그램 시작!"); try { Thread.sleep(10000); }catch(Exception e) { e.printStackTrace(); } LocalDateTime EndTime = LocalDateTime.now(); System.out.println("프로그램 종료!"); System.out.println("==================="); System.out.println("프로그램 실행시간"); System.out.println(Duration.between(StartTime, EndTime).toSeconds() + "초"); } }결과
프로그램 시작! 프로그램 종료! =================== 프로그램 실행시간 10초LocalDateTime()으로 현재 날짜/시간 출력하기 ( + 날짜/시간 포맷 설정)
- LocalDateTime().now()로 구한 현재날짜/시간을 그대로 출력하면 "2022-04-15T17:33:21.066338700" 이런 식으로 출력되는데, 이를 년, 월, 일 등으로 따로 추출하는 방법과 DateTimeFormatter을 이용해 저장하는 방법