Uniadmin
Skip to content

Golang im Vergleich zu C in der Größe der ausführbaren Dateien

Wir neh­men ein ein­fa­ches Hal­lo-Welt-Pro­gramm, um die Grö­ße der aus­führ­ba­ren Datei­en von Go und C zu vergleichen.

Hier die Go-Version:

package main
import "fmt"
func main() {
        fmt.Println("Hallo Welt")
}

Hier die C‑Version:

#include <stdio.h>
int main(void){
        printf("Hallo Welt\n");
        return 0;
}

Nach dem Com­pi­lie­ren erhal­ten wir für das Go-Pro­gramm eine Datei, die 1,86 Mega­byte auf der Plat­te belegt und für das C‑Programm eine aus­führ­ba­re Datei von 22,9 Kilo­bytes. (In unse­rem Fal­le haben wir bei­de Pro­gramm auf Free­BSD com­pi­lert, wobei Clang als C‑Compiler ver­wen­det wurde.)

Ergeb­nis: Das C‑Programm ist klei­ner.

Aber der Ver­gleich ist doch unfair, wird sofort jemand ein­wen­den. Go wird sta­tisch gelinkt. Du hast doch das C‑Programm dyna­misch gelinkt. Die clib mußt du daher noch hinzurechnen.

Dann lin­ken wir das C‑Programm eben noch ein­mal sta­tisch, und nun belegt es knapp 640 Kilo­byte. Es ist zwar grö­ßer gewor­den, aber trotz­dem, 640 Kil­boytes should be enough for anyo­ne, außer für jeman­den, der ein Hal­lo-Welt-Pro­gramm in Go schrei­ben möch­te. Der braucht 1,86 Megabyte.

Hier noch zum Ver­gleich ein äqui­va­len­tes Pro­gramm für den C64 in Basic:

10 PRINT "HALLO WELT"

Da das C64-Basic eine inter­pre­tier­te Spra­che ist, kön­nen wir das Pro­gramm nicht com­pi­lie­ren, wis­sen also nicht, wie­viel Platz eine aus­führ­ba­re Datei benö­ti­gen wür­de. Aber den­noch wis­sen wir, daß das Pro­gramm auf dem C64 nicht mehr als 64 Kilo­byte belegt.

Das soll jetzt nicht hei­ßen, daß frü­her alles bes­ser war.
Aber trotz­dem … denk mal drü­ber nach!

Tags: Go, 640 Kilobyte, Programmieren, C, C64

    Post a comment