병목 지점을 찾는 방법

효율적인 R 코드 작성

Colin Gillespie

Jumping Rivers & Newcastle University

효율적인 R 코드 작성

코드 프로파일링

기본 개념은 다음과 같습니다:

  • 코드를 실행합니다
  • 몇 밀리초마다 현재 실행 중인 내용을 기록합니다
  • Rprof()는 R에 내장되어 있으며 이 작업을 수행합니다
    • 사용이 까다로움
  • 대신 profvis를 사용합니다
효율적인 R 코드 작성

IMDB 데이터셋

  • ggplot2movies 패키지 제공
data(movies, package = "ggplot2movies")
dim(movies)
58788    24
  • 데이터 프레임: 약 60,000행, 24열
  • 각 행은 개별 영화에 해당합니다
효율적인 R 코드 작성

브레이브하트

braveheart = movies[7288,]
Year Length Rating
1995 177 8.3

효율적인 R 코드 작성

예제: 브레이브하트

# Load data
data(movies,
     package = "ggplot2movies")
braveheart <- movies[7288,]
movies <- movies[movies$Action==1,]

plot(movies$year, movies$rating, xlab = "Year", ylab = "Rating")
# local regression line model <- loess(rating ~ year, data = movies) j <- order(movies$year) lines(movies$year[j], model$fitted[j], col = "forestgreen")
points(braveheart$year, braveheart$rating, pch = 21, bg = "steelblue")

효율적인 R 코드 작성

Profvis

  • RStudio는 profvis를 통한 프로파일링을 지원합니다
    • 프로파일링할 코드를 선택합니다
    • Profile -> Profile Selected lines

효율적인 R 코드 작성

명령줄

library("profvis")

profvis({
data(movies, package = "ggplot2movies") # Load data braveheart <- movies[7288,] movies <- movies[movies$Action == 1,] plot(movies$year, movies$rating, xlab = "Year", ylab="Rating") model <- loess(rating ~ year, data = movies) # loess regression line j <- order(movies$year) lines(movies$year[j], model$fitted[j], col="forestgreen", lwd=2) points(braveheart$year, braveheart$rating, pch = 21, bg = "steelblue", cex = 3)
})

가장 느린 줄은 어디일까요?

효율적인 R 코드 작성

효율적인 R 코드 작성

효율적인 R 코드 작성

연습해 봅시다!

효율적인 R 코드 작성

Preparing Video For Download...