[오늘의 배움] Colab, JIT

이상민·2021년 3월 8일
0

[오늘의 배움]

목록 보기
52/70
post-thumbnail

1. Jupyter Notebook

  • 코드와 실행 결과를 셀 단위로 보여주는 웹앱이다. 다른 사람과 공유와 시각화가 쉬워 데이터사이언스에서 많이 사용된다.

1-1. Google colab

  • 주피터 노트북을 기반으로 만든 구글의 서비스로 주피터와 비슷한 UI에 무료로 GPU와 TPU를 제공해 머신/딥러닝 같은 분야를 학습하는 사람이 많이 사용한다

  • 런타임 메뉴의 런타임 유형 변경에서 선택할 수 있다

2. JIT 컴파일러

Just In Time 컴파일러

2-1. 인터프리터 언어 vs 컴파일러 언어

  • 인터프리터 언어 : 소스코드 전체를 기계어로 변환하는 과정없이 한줄씩 해석하며 명령어를 실행한다. 번역과 실행이 동시에 이뤄져 실행파일이 존재하지 않는다. 컴파일 과정이 없어 소스코드로부터 실행이 빠르다. 대체로 플랫폼 독립적이다
    ex) 파이썬

  • 컴파일러 언어 : 소스코드 전체를 기계어로 변환하고 실행하는 언어. 실행파일이 있고, 번역과 실행이 따로 이뤄진다. 컴파일이 이미 이뤄진 경우 인터프리터 언어 프로그램보다 훨씬 빨리 동작한다. 대체로 플랫폼 구속적이다
    ex) C

2-2. JIT 컴파일러

사실 JIT 인터프리터에 가깝다

  • 바이트코드를 기계어로 바꾸는 프로그램

  • JIT 컴파일러는 프로그램이 시작되고 코드를 컴파일한 후에 JIT 컴파일러를 실행한다

  • 동일한 바이트코드를 플랫폼에 맞게 컴파일해 크로스 플랫폼 지원에 중요한 기능이다

  • 대표적으로 자바의 JVM에서 사용된다

  • 번역하는 코드를 캐싱하기 때문에 오버헤드가 줄어 실행속도가 빨라진다

  • 바이트코드를 기계어로 컴파일하며 최적화도 한다

  • 인터프리터와 컴파일러의 특징을 모두 갖는다

바이트코드 : 가상머신에서 돌아가는 실행 프로그램을 위한 이진 표현법. 소프트웨어로 처리되기 때문에 기계어보다 추상적이다 ex) 자바의 .class 파일

profile
편하게 읽기 좋은 단위의 포스트를 추구하는 개발자입니다

0개의 댓글