Meandering Trajectory

Go 언어 - 벤치마크 본문

컴퓨터/GoLang

Go 언어 - 벤치마크

latentis 2017. 7. 8. 23:22

Go 언어를 배운지 얼마 안 돼서 무언가를 말하기는 조심스럽지만... 몇몇 장단점이 눈에 띈다.

Go 루틴이라든지 채널 같은 동시성 프로그래밍 언어를 위한 기능들은 신선하다. 그리고 네이티브 바이너리로 컴파일되는 언어치고는 방대한 양의 라이브러리를 제공한다는 점 역시 좋아 보인다. 반면 너져분하게 느껴지는[각주:1] 문법이라든지 import한 패키지의 코드가 모두 실행 파일에 포함[각주:2]되어 실행파일 크기가 지나치게 커진다든지 하는 문제는 실망스럽다.

그러던 와중에 Go 언어로 작성한 프로그램의 성능이 어떨지 궁급해서 좀 찾아봤다. 공정한 비교(?)를 위해 Garbage Collection (GC)을 이용하는 Java와 비교한 벤치마크를 살펴봤다. 놀랍게도 네이티브 코드로 컴파일되는 언어임에도 결과는 그리 신통치 못하다.

벤치마크 결과

위 벤치마크의 결과를 보면 10개의 테스트 중 5개는 Go가 앞서고 1개는 비슷하고 4개는 뒤진다. 이 중 성능 차이가 2배 이상 벌어지는 테스트를 보면 특이한 점이 눈에 띈다. 바로 메모리 사용량이 모두 100KiB가 넘는다는 것.

조심스럽게 GC 알고리즘과 연관된 원인르로 생기는 현상 아닌가 하는 추측을 해본다.


  1. 순전히 개인적인 감상이니 Go 언어를 좋아하시는 분이 이 글을 읽고 마음 상하는 일이 없기를 바란다. [본문으로]
  2. 이전에도 언급했듯이 Go의 패키지는 모두 정적 라이브러리(static library) 형태로 되어 있다. - 윈도우즈는 모르겠으나 최소한 리눅스와 맥OS 기준으로는 그렇다. [본문으로]

'컴퓨터 > GoLang' 카테고리의 다른 글

Go 채널  (0) 2017.08.09
Go: 리플렉션 #2  (0) 2017.07.16
Go: 리플렉션 #1  (0) 2017.07.15
Go 패키지의 정체  (0) 2017.06.29
Go 언어: 환경변수 설정  (0) 2017.05.08
Comments