Img profile default
조인영
  • 2016.6.23 20:04
  • 조회수 145
  • 답변수 1
Img profile default
조인영
  • 2016.6.23 20:04
  • 조회수 145
  • 답변수 1

실행시간 관련 질문

안녕하세요 자바 입문을 수강 중인 학생입니다.
이 문제를 풀다가 의문점이 생겼는데요,
이 문제는 크게 두 가지 방법으로 풀 수 있는 것 같습니다.

  1. if 문을 활용하여 짝수인지 판단한다.
  2. int i 를 1부터 50까지 증가시키고 매 반복마다 i*2를 출력한다.

둘 중 어떤 방법이 더 시간적으로 최적인지 궁금하여 여러 번 실행해 봤더니,
2.번의 경우 실행시간이 40ms~ 60ms로 비교적 좁은 범위 내에서 변동했습니다.
그런데 1번의 경우 실행시간이 빠르게는 40ms, 느리게는 90ms 이상의 시간이 걸렸습니다.

두 방법 1,2 에서 실행시간의 범위가 이렇게나 차이나는 원인이 뭘까요?
그리고 매 실행마다 실행시간을 조금씩 변동하게 하는 요인에는 어떤 것들이 있나요?

ForExam.java
public class ForExam{
  public static void main(String[] args){
    //for문을 이용해서 1부터 100까지 숫자 중 짝수만 출력해 보세요
    int i ;
    for( i = 1; i <= 100; ++i){
      if( i % 2 == 0 ) {
        System.out.println(i); 
      }
    }
  }
}
  • #자바 입문
  • #for문 - 실습

1 답변

  • Spgjnhnsidwygch8ddkd
    Chandler
    • 2016.6.24 11:40

    실행시간에 관해서 질문 주셨는데요.
    1과 2의 명령어 실행 횟수가 다르기 때문에 실행시간에 차이가 발생합니다.

    코드 1 실행 횟수
    선언 1번, for문 101번, if문 100번, 출력문 50번
    코드 2 실행 횟수
    선언 1번, for문 51번, 출력문 50번

    1은 2보다 for문 도는 횟수가 절반이고 if문도 없습니다.
    즉, 2는 필요없는 코드를 줄여 더 효율적인 코드가 된 것입니다. 따라서 실행시간이 더 짧게 나오는거죠.
    이와 관련해서 시간복잡도에 대해 공부 하시는 것을 추천합니다 :)

    매 실행마다 실행시간에 조금씩 차이가 나는 이유는 채점을 해주는 서버의 상태 등 다른 외부 요인에 의해 나타난다고 보시면 됩니다.

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.