Wir nehmen ein einfaches Hallo-Welt-Programm, um die Größe der ausführbaren Dateien 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 Compilieren erhalten wir für das Go-Programm eine Datei, die 1,86 Megabyte auf der Platte belegt und für das C‑Programm eine ausführbare Datei von 22,9 Kilobytes. (In unserem Falle haben wir beide Programm auf FreeBSD compilert, wobei Clang als C‑Compiler verwendet wurde.)
Ergebnis: Das C‑Programm ist kleiner.
Aber der Vergleich ist doch unfair, wird sofort jemand einwenden. Go wird statisch gelinkt. Du hast doch das C‑Programm dynamisch gelinkt. Die clib mußt du daher noch hinzurechnen.
Dann linken wir das C‑Programm eben noch einmal statisch, und nun belegt es knapp 640 Kilobyte. Es ist zwar größer geworden, aber trotzdem, 640 Kilboytes should be enough for anyone, außer für jemanden, der ein Hallo-Welt-Programm in Go schreiben möchte. Der braucht 1,86 Megabyte.
Hier noch zum Vergleich ein äquivalentes Programm für den C64 in Basic:
10 PRINT "HALLO WELT"
Da das C64-Basic eine interpretierte Sprache ist, können wir das Programm nicht compilieren, wissen also nicht, wieviel Platz eine ausführbare Datei benötigen würde. Aber dennoch wissen wir, daß das Programm auf dem C64 nicht mehr als 64 Kilobyte belegt.
Das soll jetzt nicht heißen, daß früher alles besser war.
Aber trotzdem … denk mal drüber nach!
Post a comment