Go-sqlite3, was hilfreich ist, wenn Sie mit sqlite3 in der Sprache Go arbeiten, der Treiberteil jedoch in der Sprache C geschrieben ist. Es gibt kein besonderes Problem mit Linux, aber aus irgendeinem Grund dauert das Kompilieren auf einem Mac einige Zeit. Daher habe ich untersucht, ob ich die Kompilierung irgendwie beschleunigen könnte.
ccache ist ein Tool, das C / C ++ - Daten zur Kompilierungszeit zwischenspeichert, um die zweite und nachfolgende Kompilierung zu beschleunigen.
Einfache Installation mit verschiedenen Paketmanagern
$ brew install ccache
$ sudo apt install ccache
Stellen Sie einfach den Befehl ccache
vor den Compiler, den Sie ständig verwenden
$ ccache gcc sample.c
$ ccache clang sample.c
$ ccache g++ sample.cpp
$ ccache clang++ sample.cpp
Der in "go build" verwendete C / C ++ - Compiler kann durch die Umgebungsvariablen "$ CC" und "$ CXX" angegeben werden. Versuchen Sie auf diese Weise, mit ccache C / C ++ zu kompilieren, das in Go-Sprachbibliotheken verwendet wird.
Es wäre schön, wenn es als "CC =" ccache gcc "angegeben werden könnte. Wenn dies jedoch unverändert bleibt, tritt ein Fehler auf. Erstellen Sie daher eine Datei zum Aufrufen.
$ 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
Dies ist ein Beispiel, das nur go-sqlite3 importiert
package main
import (
"fmt"
_ "github.com/mattn/go-sqlite3"
)
func main() {
fmt.Println("hello, world.")
}
Da es das zweite Mal und später ist, dass es zwischengespeichert wird und die Kompilierung beschleunigt wird, wird das Ergebnis des zweiten Males veröffentlicht.
$ 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
Sie können glücklich sein, wenn Sie ccache installieren und export CC = ccache-gcc
in bashrc schreiben.
Recommended Posts