Щодо мовного дизайну, насправді немає нічого такого, що повинно зробити Go повільніше, ніж Java взагалі. Насправді це дає більше контролю над компонуванням пам'яті ваших структур даних, тому для багатьох поширених завдань це повинно бути дещо швидше. Однак поточний первинний компілятор Go, планувальник, збирач сміття, бібліотека regexp та багато інших речей не особливо оптимізовані. Це невпинно поліпшується, але, здається, фокус робиться на тому, щоб бути корисним, простим та досить швидким у перемозі у мікробензинових оцінках.
У пов'язаному орієнтирі Go втрачає велику кількість Java на бінарному дереві та тесті regexp. Це тести системи управління пам'яттю та бібліотеки regexp відповідно. Управління пам'яттю Go може бути швидшим і, безумовно, покращиться з часом, а поточна стандартна бібліотека regexp - це заповнювач для набагато кращої реалізації, яка незабаром настає. Тож програш цим двом не дивно, і найближчим часом маржа повинна бути більш вузькою.
Для критерію k-нуклеотидів порівняти дещо важко, оскільки код Java, схоже, використовує інший алгоритм. Код Go, безумовно, виграє від вдосконалення компілятора, планувальника та розподільника, навіть як написано, але комусь доведеться переписати код Go, щоб зробити щось більш розумне, якби ми хотіли більш точно порівняти.
Java перемагає в бенчмарті Мандельброт, тому що це все арифметика і циклі з плаваючою точкою, і це чудове місце для JVM для створення справді хорошого машинного коду та підйомних речей під час виконання. Для порівняння, у порівнянні є досить простий компілятор, який не піднімає, не розкручує і не генерує справді жорсткий машинний код, тому не дивно, що він втрачає. Однак слід пам’ятати, що в часі Java не враховується час запуску JVM або скільки разів його потрібно запустити для JVM, щоб його добре здійснити. Для тривалих програм це не актуально, але це має значення в деяких випадках.
Що стосується решти еталонів, Java та Go - це, як правило, шиї, при цьому Go займає значно менше пам’яті та в більшості випадків менше коду. Отже, хоча Go в ряді цих тестів Go повільніше, ніж Java, Java досить швидка, Go порівняно непогано, і Go, швидше за все, стане значно швидшим.
Я з нетерпінням чекаю, коли gccgo (компілятор Go, який використовує gcc codegen) зрілий; це повинно змусити Go майже збігатися з C для багатьох типів коду, що буде цікаво.