Go 1.10 컴파일 속도 개선.

프로그래밍 2017. 12. 21. 12:47 Posted by 정직한 UnHa Kim

Go언어 공식 웹사이트에 1.10 베타 버전이 업로드 되었다.

이번 버전 역시 개인적인 최대 관심사는 Go언어 컴파일러가

버전 1.4까지 C언어로 작성되었다가

버전 1.5부터 Go언어로 변경되면서 느려진 컴파일 속도가

얼마나 다시 빨라질 것인가 이었다.


애초에 Go언어를 선택한 중요한 이유 중 하나가

엄청나게 빠른 컴파일 속도 덕분에 인터프리터 언어 못지 않은 작업 생산성이 나온다는 것이었고,

버전 1.5 이후 2배 가까이 느려진 컴파일 속도와 더불어서

프로젝트에서 사용하는 외부 라이브러리도 많아지면서

컴파일 시간이 늘어나면서 작업 생산성이 떨어졌기 때문이었다.


1.10 버전에서 가장 큰 개선점은 빌드 캐쉬로 인한 컴파일 속도 개선이다.

의존성 라이브러리를 비롯한 모든 소스코드는 컴파일 결과가 캐쉬(임시 저장)되며,

파일 수정날짜에 상관없이 오직 내용 변경여부 만으로 재컴파일 여부를 결정한다.


1번째 컴파일은 여전히 느리지만,

2번째 컴파일부터는 변경된 소스코드만 컴파일 하므로,

컴파일 작업량이 대폭 줄어들면서 속도가 확연하게 빨라진다.


대개 인간의 집중력 유지 시간은 15초를 넘기지 못한다.

여러 단점에도 불구하고 인터프리터 언어가 높은 생산성을 보여주는 이유는

컴파일 과정이 존재하지 않으므로,

'수정-실행' 작업 루틴 중 집중력이 유지되는 이유가 크다.


예전에는 소스코드 수정 후 테스트 실행하면 10초 넘게 빌드되기를 기다려야 되다보니,

집중력이 떨어지고, 작업 흐름이 끊기는 게 느껴졌지만,

1.10부터는 빌드 타임이 짧아지면서 그 정도가 낮아졌다.

즉, 집중력이 유지되면서 작업 흐름이 끊기지 않고 계속 이어진다.


높아진 작업 생산성을 체감하면서 이 글을 쓰고 있다.

드디어 마지막 C언어로 작성되었던 Go 언어 버전 1.4를 떠나보낼 수 있게 되었다.


댓글을 달아 주세요