Go-sqlite3, ce qui est utile lorsqu'il s'agit de sqlite3 en langage Go, mais la partie pilote est écrite en langage C. Il n'y a pas de problème particulier avec Linux, mais pour une raison quelconque, la compilation sur Mac prend du temps, c'est donc un mémo que j'ai étudié si je pouvais accélérer la compilation.
ccache est un outil qui met en cache les données de compilation C / C ++ pour accélérer la deuxième compilation et les suivantes.
Facile à installer avec divers gestionnaires de paquets
$ brew install ccache
$ sudo apt install ccache
Mettez simplement la commande ccache
devant le compilateur que vous utilisez tout le temps
$ ccache gcc sample.c
$ ccache clang sample.c
$ ccache g++ sample.cpp
$ ccache clang++ sample.cpp
Le compilateur C / C ++ utilisé dans go build
peut être spécifié par les variables d'environnement $ CC
et $ CXX
.
En utilisant cela, essayez d'utiliser ccache pour compiler C / C ++ utilisé dans les bibliothèques de langage Go.
Ce serait bien s'il pouvait être spécifié comme CC = 'ccache gcc'
, mais si cela reste tel quel, une erreur se produira, alors créez un fichier à appeler.
$ sudo echo '#!/bin/bash
exec ccache gcc $@' > /usr/local/bin/ccache-gcc
$ sudo chmod +x /usr/local/bin/ccache-gcc
$ CC=ccache-gcc go build sample.go
Ceci est un exemple qui importe simplement go-sqlite3
package main
import (
"fmt"
_ "github.com/mattn/go-sqlite3"
)
func main() {
fmt.Println("hello, world.")
}
Comme c'est la deuxième fois et plus tard qu'il est mis en cache et que la compilation s'accélère, le résultat de la deuxième fois est publié.
$ CC=gcc time go build sample.go
real 0m42.89s
user 0m39.95s
sys 0m2.14s
$ CC=clang time go build sample.go
real 0m36.53s
user 0m32.93s
sys 0m1.75s
$ CC=ccache-gcc time go build sample.go
real 0m4.143s
user 0m2.942s
sys 0m1.194s
$ CC=ccache-clang time go build sample.go
real 0m3.80s
user 0m2.10s
sys 0m1.24s
Vous pouvez être heureux si vous installez ccache et écrivez ʻexport CC = ccache-gcc` dans bashrc.
Recommended Posts