DenPark
131
2018-08-24 12:32:27 작성 2018-08-24 12:40:10 수정됨
2
399

처리속도에 관련된


C언어프로그램에서

어느 서브루틴을 한번 호출하니 0.08초의 시간이 걸렸습니다

이걸 5만회 돌리면 0.08 x 50000로 약 한시간의 시간이 걸리겠지 하고 걱정했는데


실제로 돌려보니 3분 정도 걸렸습니다.


이는 os의 시퓨 리소스 분배로 퍼포먼스를 보인건가요?


Ps.서버컴퓨터에서 확인

0
0
  • 답변 2

  • 단설
    622
    2018-08-24 12:53:36 작성 2018-08-24 12:55:53 수정됨

    반복문을 쓰게 되면 컴파일러에서 최적화해주는 부분도 있고, 한번만 돌릴 때는 각종 초기화 작업까지 포함해서 0.08초였기 때문이 아닐까요?

    파이프라인, 분기 예측 등으로 이득을 봤을 수도 있겠지만 별도로 병렬처리 해주신게 아니라면 리소스 분배로 큰 이득을 보셨을 것 같진 않습니다.

    0
  • 야옹이돼지
    363
    2018-08-24 21:22:56

    서브루틴이라고 하셨는데 어떤 서브루틴인지 힌트라도 있어야 추정할 수 있습니다.

    매우 많은 경우가 있습니다.


    예를 들면 서브루틴에 첫 호출 때만 돌아가는 초기화가 있다던가, 디스크 io를 하는데 첫 호출 후에는 메모리 캐시된 상태라 빨라진다든가 매우 다양합니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.