'gc'와 'gccgo'의 주요 차이점은 무엇입니까?
두 가지 인기있는 Go 컴파일러 인 'gc'와 'gccgo'의 주요 차이점은 무엇입니까? 빌드 성능? 런타임 성능? 명령 줄 옵션? 라이선스?
나는 어떤 것이 가장 좋은지에 대한 의견을 찾는 것이 아니라 그들의 차이점에 대한 기본적인 개요 일 뿐이므로 어떤 것이 내 필요에 가장 적합한 지 결정할 수 있습니다.
" gccgo 설정 및 사용 "에서 자세한 내용을 볼 수 있습니다 .
Go 언어 용 컴파일러 인 gccgo. gccgo 컴파일러는 GCC의 새로운 프런트 엔드입니다.
gccgo는 gc 컴파일러가 아닙니다.
" GCC 4.7.1의 Gccgo "(2012 년 7 월) 에 설명 된대로
Go 언어는 항상 구현이 아닌 사양에 의해 정의되었습니다. Go 팀은 해당 사양을 구현하는 두 가지 컴파일러 인 gc 및 gccgo를 작성했습니다.
- Gc는 원래 컴파일러이며 go 도구는 기본적으로이를 사용합니다.
- Gccgo는 다른 초점을 가진 다른 구현입니다.
gc에 비해 gccgo는 코드 컴파일 속도가 더 느리지 만 더 강력한 최적화를 지원하므로 gccgo로 빌드 된 CPU 바인딩 프로그램은 일반적으로 더 빠르게 실행됩니다.
또한:
- gc 컴파일러는 x86 (32 비트 및 64 비트) 및 ARM과 같이 가장 많이 사용되는 프로세서 만 지원합니다.
- 그러나 Gccgo는 GCC가 지원하는 모든 프로세서를 지원합니다.
모든 프로세서가 gccgo에 대해 철저하게 테스트 된 것은 아니지만 x86 (32 비트 및 64 비트), SPARC, MIPS, PowerPC 및 Alpha를 포함한 많은 프로세서가 있습니다.
Gccgo는 gc 컴파일러가 지원하지 않는 운영 체제, 특히 Solaris에서도 테스트되었습니다.당신은 표준 이동 릴리스에서 이동 명령을 설치하는 경우, 이미 지원은 통해 gccgo
-compiler
옵션 :go build -compiler gccgo myprog
.
간단히 말해서 : gccgo : 더 많은 최적화, 더 많은 프로세서 .
그러나, 주석 에 의해 OneOfOne ( 소스 ), gccgo 지원 이동, 최신 이동 릴리스 사이의 동기 이탈 종종있다 :
gccgo는 버전 go v1.2까지만 지원 하므로 1.3 / 1.4 (팁)에서 새로운 것이 필요한 경우 gccgo를 사용할 수 없습니다. –
GCC 릴리스 4.9 에는 gccgo의 Go 1.2 (1.3 아님) 버전이 포함됩니다 .
GCC 및 Go 프로젝트의 릴리스 일정이 일치하지 않습니다. 즉, 1.3은 개발 브랜치에서 사용할 수 있지만 다음 GCC 릴리스 인 4.10에는 gccgo의 Go 1.4 버전이있을 가능성이 높습니다.
twotwotwo 는 Brad Fitzpatrick의 프레젠테이션 슬라이드 에 대한 의견 에
gccgo는 아주 좋은 코드를 생성
하지만 이스케이프 분석이 부족합니다. 많은 작은 할당 + 쓰레기로 성능을 저하
시킵니다. GC는 정확하지 않습니다. 32 비트에 적합하지 않습니다.
twotwotwo는 다음을 추가합니다.
또 다른 슬라이드에서는 gccgo가 아닌 ARM 코드 생성이 불안정하다고 언급합니다.
프로젝트에 대한 흥미로운 옵션이라고 가정하면 대상 아키텍처의 사용 사례에 대한 바이너리를 비교할 수 있습니다.
로 peterSO의 의견 , 이동 1.5 지금 (Q3 / Q4 2015) 수단 :
컴파일러와 런타임은 이제 완전히 Go로 작성되었습니다 (작은 어셈블러 사용).
C는 더 이상 구현에 관여하지 않으므로 한때 배포판을 빌드하는 데 필요했던 C 컴파일러는 사라졌습니다 .
"Go in Go"슬라이드 에는 다음이 언급되어 있습니다.
C는 사라졌습니다.
참고 : gccgo는 여전히 강세를 보이고 있습니다.
참고 URL : https://stackoverflow.com/questions/25811445/what-are-the-primary-differences-between-gc-and-gccgo
'IT TIP' 카테고리의 다른 글
Angular.js 및 ASP.NET MVC 4 (0) | 2020.10.24 |
---|---|
-> <-연산자는 무엇을합니까? (0) | 2020.10.24 |
.NET Core (비 ASP.NET Core) 프로젝트 용 VS2017 솔루션 탐색기에서 파일을 중첩 할 수 있습니까? (0) | 2020.10.24 |
Google Firestore : 속성 값의 하위 문자열에 대한 쿼리 (텍스트 검색) (0) | 2020.10.24 |
.NET에 XML 직렬화 가능한 사전이없는 이유는 무엇입니까? (0) | 2020.10.24 |