컴퓨터/GoLang
Go 언어 - 벤치마크
latentis
2017. 7. 8. 23:22
Go 언어를 배운지 얼마 안 돼서 무언가를 말하기는 조심스럽지만... 몇몇 장단점이 눈에 띈다.
Go 루틴이라든지 채널 같은 동시성 프로그래밍 언어를 위한 기능들은 신선하다. 그리고 네이티브 바이너리로 컴파일되는 언어치고는 방대한 양의 라이브러리를 제공한다는 점 역시 좋아 보인다. 반면 너져분하게 느껴지는 문법이라든지 import한 패키지의 코드가 모두 실행 파일에 포함 1되어 실행파일 크기가 지나치게 커진다든지 하는 문제는 실망스럽다. 2
그러던 와중에 Go 언어로 작성한 프로그램의 성능이 어떨지 궁급해서 좀 찾아봤다. 공정한 비교(?)를 위해 Garbage Collection (GC)을 이용하는 Java와 비교한 벤치마크를 살펴봤다. 놀랍게도 네이티브 코드로 컴파일되는 언어임에도 결과는 그리 신통치 못하다.
위 벤치마크의 결과를 보면 10개의 테스트 중 5개는 Go가 앞서고 1개는 비슷하고 4개는 뒤진다. 이 중 성능 차이가 2배 이상 벌어지는 테스트를 보면 특이한 점이 눈에 띈다. 바로 메모리 사용량이 모두 100KiB가 넘는다는 것.
조심스럽게 GC 알고리즘과 연관된 원인르로 생기는 현상 아닌가 하는 추측을 해본다.