Сколько занимает программа на «Go»

Хочу немного развеять тот миф, который я невольно создал — что скомпилированные программы, написанные на языке «Go» занимают очень много. Мой скомпилированный пример с веб-сервером (программа «httphere») занимает почти шесть мегабайт и это не выглядит много для такой программы.

На самом деле, всё не так просто. Простенькая программа на «Go», например, классический «Hello, world!» займёт около 230КБ:
bolk-osx:Hello bolk$ cat <<GO > hello.go
> package main; func main() { println("Hello, world!") }
> GO

bolk-osx:Hello bolk$ 6g hello.go && 6l -o hello hello.6 && du -h hello 
232K	hello
При увеличении исходного кода размер вырастает незначительно, в моей шестимегабайтной программе большую часть занимает веб-сервер (модуль «http»), если его убрать, то скомпилированная программа «похудеет» примерно на 5,5МБ.

Сейчас я пишу программу где уже 414 строк (в httphere — 132) и подключено 11 стандартных модулей, включая модуль для работы с изображениями («image»), скомпилированная версия занимает 1,5 мегабайта. Хотел бы попробовать сжать файл архиватором UPX, но, к сожалению, он не понимает тип запускаемых файлов моей системы (Mach-O 64 бита).
9 мая 2011 22:41

Студентота (инкогнито)
11 мая 2011, 23:45

Курсовик на Go: 2.5к строк -> 1.2 Мб.

bolk (bolknote.ru)
12 мая 2011, 01:13, ответ предназначен Студентоте

Ого, а что писалось такое большое? Что было самым сложным? Использовался ли cgo (я как раз его сейчас осваиваю).

Школота (инкогнито)
12 мая 2011, 02:13

Просто писалось студентом, поэтому 2.5к строк :)

Студентота (инкогнито)
12 мая 2011, 02:21, ответ предназначен bolk (bolknote.ru):

Оно еще пишется. Пока эти 2.5к включают лексер, парсер, семантику и зачатки интерпретатора небольшого подмножества Паскаля.
Самым сложным было попытаться конвертировать образ мысли плюс-плюс-программиста и разместиться в этих ошметках ООПа, что есть в Go.
В итоге (плюс нехватка времени, как обычно) семантический анализ (который писался после начального порыва следовать канонам языка, но до окончательного привыкания) превратился в изрядный говнокод, этакий сишный код образца первого курса. Стыдно :)

Писалось все на чистом Go, благо особых изысков не нужно.

Ну и, конечно, малость напрягает, что язык "плывет". Обновишься, бывало, и вот уже будь добр править все, что поломалось.

bolk (bolknote.ru)
12 мая 2011, 09:13, ответ предназначен Студентоте

Даже если говнокод, всё равно, интерпретатор «Паскаля» на «Гоу» — это звучит солидно :)

rodem (инкогнито)
12 мая 2011, 11:44

I/O BootCamp 2011: Real World Go
http://www.youtube.com/watch?v=7QDVRowyUQA

Эволюция Go: what is it good for?
http://db.tt/McSeFgv

bolk (bolknote.ru)
12 мая 2011, 13:43, ответ предназначен rodem

Спасибо!

bolk (bolknote.ru)
15 мая 2011, 18:44, ответ предназначен Студентоте

У меня уже 1274 строки и занимает 1,6МБ, но у меня теперь вкомпиленный GD вовнутрь.

bolk (bolknote.ru)
19 ноября 2011, 22:27

Утилита strip помогла сэкономить 11КБ в программе hello на «Гоу».

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)