[GO] Beschleunigen Sie die C / C ++ - Kompilierung mit ccache

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.

Was ist Ccache?

ccache ist ein Tool, das C / C ++ - Daten zur Kompilierungszeit zwischenspeichert, um die zweite und nachfolgende Kompilierung zu beschleunigen.

Einführung

Einfache Installation mit verschiedenen Paketmanagern

Für Mac

$ brew install ccache

Für Debian

$ sudo apt install ccache

Grundlegende Verwendung

Stellen Sie einfach den Befehl ccache vor den Compiler, den Sie ständig verwenden

Verwenden Sie mit gcc

$ ccache gcc sample.c

Verwenden Sie mit Klirren

$ ccache clang sample.c

Wird mit g ++ verwendet

$ ccache g++ sample.cpp

Wird mit clang ++ verwendet

$ ccache clang++ sample.cpp

Versuchen Sie es für die Kompilierung der Go-Sprache

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.

Machen Sie eine Anrufdatei

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

Versuchen Sie zu kompilieren

$ CC=ccache-gcc go build sample.go

Überprüfung

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.

Kompilieren Sie mit gcc (ohne ccache)

$ CC=gcc time go build sample.go

real	0m42.89s
user	0m39.95s
sys 	0m2.14s

Kompilieren Sie mit clang (ohne ccache)

$ CC=clang time go build sample.go

real	0m36.53s
user	0m32.93s
sys 	0m1.75s

Kompilieren Sie mit gcc mit ccache

$ CC=ccache-gcc time go build sample.go

real	0m4.143s
user	0m2.942s
sys 	0m1.194s

Kompilieren Sie mit clang mit ccache

$ CC=ccache-clang time go build sample.go

real	0m3.80s
user	0m2.10s
sys 	0m1.24s

Zusammenfassung

Sie können glücklich sein, wenn Sie ccache installieren und export CC = ccache-gcc in bashrc schreiben.

Recommended Posts

Beschleunigen Sie die C / C ++ - Kompilierung mit ccache
Beschleunigen Sie Python mit numba grob
Behälterartig hergestellt mit C # 1
Memo von "Cython beschleunigt Python durch Fusion mit C"
BASIC und C sowie Assembler-Geschwindigkeitsvergleich und -optimierung spielen mit IchigoJam
Verwenden von X11 mit ubuntu18.04 (C-Sprache)
Geschwindigkeitsvergleich von Python, Java, C ++
Versuchen Sie Google Mock mit C.
Python-Kompilierung mit pyqt deploy
Beschleunigen Sie den Befehl netstat
Formatieren Sie die Sprachquelle C mit pycparser
Einfache Python-Kompilierung mit NUITKA-Utilities
Schreiben Sie Python nicht, wenn Sie es mit Python beschleunigen möchten
[Python] Drücken Sie Keras von TensorFlow und TensorFlow von c ++, um die Ausführung zu beschleunigen.
Beschleunigen Sie die Verarbeitung mithilfe des C ++ - Vektors unordered_map intern in Cython