Jeśli chodzi o projektowanie języka, tak naprawdę nie ma nic, co mogłoby spowolnić Go w porównaniu z Javą. W rzeczywistości daje większą kontrolę nad układem pamięci struktur danych, więc w przypadku wielu typowych zadań powinno być nieco szybsze. Jednak obecny podstawowy kompilator Go, harmonogram, moduł czyszczenia pamięci, biblioteka wyrażeń regularnych i wiele innych rzeczy nie jest specjalnie zoptymalizowanych. To stale się poprawia, ale wydaje się, że nacisk kładziony jest na bycie użytecznym, prostym i wystarczająco szybkim w porównaniu do wygrywania w mikrodrukach.
W powiązanym teście Go traci duże znaczenie Java w drzewie binarnym i teście wyrażenia regularnego. Są to odpowiednio testy systemu zarządzania pamięcią i biblioteki wyrażeń regularnych. Zarządzanie pamięcią Go może być szybsze i z czasem ulegnie poprawie, a obecna standardowa biblioteka regexp jest symbolem zastępczym dla znacznie lepszej implementacji, która wkrótce nadejdzie. Przegrana na tych dwóch nie jest więc zaskakująca, aw najbliższej przyszłości margines powinien być węższy.
W przypadku testu porównawczego k-nukleotydów jest to nieco trudne do porównania, ponieważ kod Java wydaje się używać innego algorytmu. Kod Go z pewnością skorzysta z ulepszeń kompilatora, harmonogramu i alokatora, nawet jak napisano, ale ktoś musiałby przepisać kod Go, aby zrobić coś bardziej sprytnego, gdybyśmy chcieli dokładniej porównać.
Java wygrywa w teście mandelbrota, ponieważ jest to arytmetyka zmiennoprzecinkowa i pętle, i jest to świetne miejsce dla JVM do generowania naprawdę dobrego kodu maszynowego i podnoszenia rzeczy w czasie wykonywania. Dla porównania, Go ma dość prosty kompilator, który obecnie nie podnosi, nie rozwija ani nie generuje naprawdę ciasnego kodu maszynowego, więc nic dziwnego, że przegrywa. Należy jednak pamiętać, że taktowanie Javy nie liczy czasu rozruchu JVM ani tego, ile razy trzeba go uruchomić, aby JVM ładnie JITM. W przypadku długo działających programów nie jest to istotne, ale w niektórych przypadkach ma znaczenie.
Jeśli chodzi o resztę testów, Java i Go są w zasadzie „szyja w szyję”, przy czym Go zajmuje znacznie mniej pamięci, a w większości przypadków mniej kodu. Tak więc, podczas gdy Go jest wolniejszy niż Java w wielu tych testach, Java jest dość szybka, Go radzi sobie całkiem dobrze w porównaniu, a Go prawdopodobnie przyspieszy w najbliższej przyszłości.
Nie mogę się doczekać, kiedy gccgo (kompilator Go korzystający z gcc codegen) osiągnie dojrzałość; powinno to uczynić Go prawie zgodnym z C dla wielu rodzajów kodu, co będzie interesujące.