GCC是一个功能强大的编译器,不仅可以编译我们很熟悉的C/C++,也可以做为Fortran、Pascal、Objective-C等语言的编译器。而GCCGO则是GCC专门用来编译Golang语言的。
GC,全称Golang Compiler,是Go语言官方编译器,也是自带的,通常我们使用的go build等,就是GC。

大部分人认同的比较结果:

  GC是Go语言原生的编译器,不需要安装,使用方使;而GCCGO需要自已安装。

  GC编译速度比GCCGO快。

  GC只支持一些主流的处理器,如x86、amd、ARM等。而GCCGO支持基本上所有的处理器。

  GCCGO编译出的程序运行效率更高,因为GCCGO比GC代码优化能力更强大。

  GCCGO编译的代码可以更好的用于GDB。

  GCCGO具有滞后性,并不能支持编译所有的Golang版本,这个在使用时要注意。

  GCCGO能生成很好的执行代码,但缺少逃逸检测,会在很多小内存的分配和回收上损失一些性能。

  GC实现的不严谨,对32位系统支持很差。在ARM芯片架构上不使用GCCGO编译的代码是靠不住的。

golang编译器:gccgo vs gc的更多相关文章

  1. calling c++ from golang with swig--windows dll(一)

    calling c++ from golang with swig--windows dll 之前项目组开发的项目核心代码全部使用C++语言,新项目可能会引入golang,花了一天多时间研究了wind ...

  2. Golang之go 命令用法

    Go 命令 Go 命令 Go语言自带有一套完整的命令操作工具,你可以通过在命令行中执行go来查看它们: 图1.3 Go命令显示详细的信息 这些命令对于我们平时编写的代码非常有用,接下来就让我们了解一些 ...

  3. golang环境安装和配置

    go中环境安装 前言 最近在工作中需要新配置go环境,每次都要去网上查找教程,浪费时间,那么就自己总结下. 下载安装 linuxGolang官网下载地址:https://golang.org/dl/1 ...

  4. Golang汇编命令解读

    我们可以很容易将一个golang程序转变成汇编语言. 比如我写了一个main.go: package main func g(p int) int { return p+1; } func main( ...

  5. Golang 的内存管理(上篇)

    Golang 的内存管理基于 tcmalloc,可以说起点挺高的.但是 Golang 在实现的时候还做了很多优化,我们下面通过源码来看一下 Golang 的内存管理实现.下面的源码分析基于 go1.8 ...

  6. 如何定位 golang 进程 hang 死的 bug

    之前在 golang 群里有人问过为什么程序会莫名其妙的 hang 死然后不再响应任何请求.单核 cpu 打满. 这个特征和我们公司的某个系统曾经遇到的情况很相似,内部经过了很长时间的定位分析总结,期 ...

  7. [golang]golang 汇编

    https://lrita.github.io/2017/12/12/golang-asm/#why 在某些场景下,我们需要进行一些特殊优化,因此我们可能需要用到golang汇编,golang汇编源于 ...

  8. Golang内存管理

    Golang 内存管理 原文链接[http://legendtkl.com/2017/04/02/golang-alloc/] Golang 的内存管理基于 tcmalloc,可以说起点挺高的.但是 ...

  9. 【转】Golang汇编命令解读

    原文: https://www.cnblogs.com/yjf512/p/6132868.html ------------------------------------------------- ...

随机推荐

  1. git查看/修改个人信息-用户名邮箱

    我们在使用git作为仓库管理工具时,要设置自己Git的用户名和邮箱,要不然大家一块开发时不知道谁是谁,不知道谁提交的. 另外,当我们用自己的电脑开发时你可能设置的是一个你喜欢的昵称,所以那就得改一下. ...

  2. 【centOS】centOS7 下载

    地址:http://mirrors.aliyun.com/centos/ 进入国内的阿里云的,这里CentOS 7提供了三种ISO镜像文件的下载:DVD ISO.Everything ISO.Mini ...

  3. PHP+Mysql查询上一篇和下一篇文章实例

    简单的PHP+Mysql查询上一篇和下一篇文章实例,并输出上一篇和下一篇文章的标题和链接,适合新手学习 获取当前浏览文章id: $id = isset($_GET['id']) > 0 ? in ...

  4. springmvc学习笔记二:重定向,拦截器,参数绑定

    Controller方法返回值 返回ModelAndView controller方法中定义ModelAndView对象并返回,对象中可添加model数据.指定view. 返回void 在Contro ...

  5. crm-4权限

    1.rbac-优化login函数 因为login是业务逻辑 ,而rbac是个组件 ,将rbac在login的代码分离 ###初始化权限函数分离出去 rbac/service/permission fr ...

  6. RV32FDQ/RV64RDQ指令集(2)

    下面我们逐个看下每个指令的细节: fadd.s fadd.s rd, rs1, rs2     //f [rd] = f [rs1] + f [rs2]单精度浮点加(Floating-point Ad ...

  7. 程序卡在 while(SPI_I2S_GetFlagStatus(W5500_SPI, SPI_I2S_FLAG_TXE) == RESET) 处

    stm32 SPI1,发现程序卡在 while(SPI_I2S_GetFlagStatus(W5500_SPI, SPI_I2S_FLAG_TXE) == RESET); 解决方式: 1.检查RCC时 ...

  8. MySQL 设置表注释

    新增表增加注释 CREATE TABLE sys_tables ( owner ) NOT NULL COMMENT '归属用户', table_name ) NOT NULL COMMENT '表名 ...

  9. [转]Eclipse插件开发之基础篇(5) 制作OSGi Bundle

    原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/18/eclipse_plugin_1_2_2.html 1. 生成OSGi工程 首先打开新工程 ...

  10. 外置 tomcat 服务器设置

    外置 Tomcat 没这么太用, 今天在 windows  搭 xwiki  服务器, 比预期多花了点时间, 主要是 tomcat 环境变量没配对, tomcat 启动后闪退, 还没有日志. 最后定位 ...