ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [R] system.time을 이용한 실행 속도 측정
    Data Analysis/R 2021. 8. 29. 19:05

    Photo by Lucas Santos on Unsplash

     

    Table of Contents

    1. Introduction
    2. 현재 시간을 출력하는 함수, Sys.time
    3. 코드의 실행 속도를 측정하는 함수, system.time
    4. Reference

     

    Introduction

    R을 이용한 프로그래밍을 수행해본 경험이 축적되면서 어떻게 하면 소스를 효율적으로 개발할 것인가 고민하게 된다. 프로젝트를 수행하면서 프로그램을 개발할 때에는 한정된 리소스를 이용하기 때문에 불필요한 소스 코드를 최소화하고 효율적으로 작성하기 위한 소스 튜닝 작업을 진행한다. R에서는 소스 코드를 실행했던 시간을 측정하기 위한 기본적인 함수가 있다. 이와 관련하여 작성한 함수보다 더 빠르고 효율적으로 작동할 수 있게 소스 실행 속도를 측정하기 위한 다양한 방법이 있다.

     

    현재 시간을 출력하는 함수, Sys.time

    R에서 현재의 시간을 출력하기 위한 Sys.time() 함수가 있다. 이를 실행하면 아래와 같은 결과가 출력된다. 그렇다면 Sys.time() 함수를 이용한다면 내 프로그램의 속도를 측정할 수 있지 않을까? 이에 대한 대답은 '예스'이다.

    > Sys.time()
    [1] "2021-07-05 00:13:32 KST"

    프로그램이 실행하는 시점을 알 수 있도록 Sys.time()을 startTm 객체에 할당하고, 종료 시 시간을 알 수 있도록 endTm 객체에 Sys.time()을 다시 한번 할당해준다. 그리고 endTm 객체에서 startTm 객체의 차이를 계산하면 두 시점이 얼마나 흘렀는지 알 수 있다. 간단하게 코드로 정리하면 다음과 같다.

    > {
    +   startTm = Sys.time()
    +   Sys.sleep(10)
    +   endTm = Sys.time()
    + }
    
    > endTm - startTm
    Time difference of 10.23277 secs

     

    코드의 실행 속도를 측정하는 함수, system.time

    Sys.time()을 이용하여 코드의 실행 속도를 측정해보았다. 다만, 이 방법을 이용해서 시간을 측정할 경우에는 startTm 객체에 시작 시간을 할당하는데 사용하는 시간과 endTm 객체에 종료 시간을 할당하는데 사용하는 시간이 포함되어 있기 때문에 미세하게 영향을 줄 수 있다.

     

    이를 보완하기 위한 R 기본 함수가 있다. 바로 system.time() 함수이다. 함수를 사용하는 방법은 아주 간단하다. system.time() 함수에 실행하고자 하는 함수를 입력하고 실행해준다.

    > system.time(Sys.sleep(10))
     사용자  시스템 elapsed 
       0.01    0.00   10.22 

     

    Reference

    "Sys.time", https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/Sys.time

    "system.time", https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/system.time

    댓글

Designed by Tistory.