1 효율적인 데이터 사이언스 코드

데이터 사이언스를 위해서 효율적인(efficient) 파이썬 혹은 R코드를 작성하게 된다. 효율적인 코드는 다음 두가지 조건을 모두 충족하는 코드를 일반적으로 지칭한다.

  • 최소 작업완료시간 → 빠른 실행시간
  • 최소 컴퓨팅 자원소비 → 저장공간 메모리를 적게 차지함.

여기에 더해서 가독성(readability)도 중요하다.

  • 작성하고 유지보수하기 좋은 코드

2 효율적인 코드 측정

효율적인(efficient) 파이썬 혹은 R코드를 측정하기 위해서 파이썬과 R 모두 다양한 팩키지와 모듈이 출시되어 있다.

2.1 실행시간(runtime) 측정

쥬피터 노트북 혹은 IPython의 마술 명령어(magic command) %timeit을 들 수 있고,

  • %timeit -r3 -n5 명령은 3번 5회 반복을 의미한다.
    • -r: 실행횟수
    • -n: 반복횟수
  • -o: 실행결과를 저장

%timeit은 한행에 한정되지만, %%timeit을 사용하게 되면 셀(cell)에 포함된 전체 코드가 대상이 된다.

2.2 코드 프로파일링 - 실행시간(runtime)

쥬피터 혹은 IPython 노트북에서 마술 명령어(magic command), %timeit을 사용해도 되지만, 전체 코드 실행시간을 얘기할 뿐 코드 내부에 행별로 나눠서 실행시칸을 명시적으로 얘기하고 있지는 않고 있다.

이를 위해서 line_profiler 팩키지를 사용해서 행별로 실행되는데 소요된 시간을 측정하여 효율적인 코드로 탈바꿈시킬 수 있다.

2.3 코드 프로파일링 - 메모리

memory_profiler 팩키지를 사용해서 행별로 소요되는 메모리 점유량을 측정할 수 있다.