The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз языка программирования Go 1.13, opennews (?), 04-Сен-19, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


35. "Релиз языка программирования Go 1.13"  +/
Сообщение от anonismus (?), 04-Сен-19, 13:49 
> Не позволяет.

Позволяет.
Оверхед у оптимизированного софта на Go ~10-15% по сравнению с Си (в зависимости от профиля нагрузки).

Если так любите синтетику, вот, кушайте:
https://www.techempower.com/benchmarks/#section=data-r18&hw=...

А еще есть научная работа по написанию сетевого драйвера на Go:
https://www.net.in.tum.de/fileadmin/bibtex/publications/thes...
Раздел "Benchmarks" вполне подтверждает тезис "добиться производительности, сопоставимой с программами на язике Си".

Ссылки на benchmarksgame это моветон.

Ответить | Правка | Наверх | Cообщить модератору

43. "Релиз языка программирования Go 1.13"  +/
Сообщение от Аноним (62), 04-Сен-19, 15:26 
> Оверхед у оптимизированного софта на Go ~10-15% по сравнению с Си (в
> зависимости от профиля нагрузки).

Разница в скорости скомпилированного с различными ключами С может запросто быть более 20% (при том что -Os внезапно обгонит -O2). Так что подумаете, что откуда в тех измерениях такая "точность".

Ответить | Правка | Наверх | Cообщить модератору

47. "Релиз языка программирования Go 1.13"  +1 +/
Сообщение от Аноним (48), 04-Сен-19, 15:42 
Кто синтетику делает тот её и подгоняет. В одной ссылке подогнано под го, а в другой нет.
Ответить | Правка | Наверх | Cообщить модератору

81. "Релиз языка программирования Go 1.13"  +/
Сообщение от anonismus (?), 04-Сен-19, 21:13 
Это мои личные наблюдения на прикладной задаче (UDP сервер).
Не претендую на точность, разница может быть и в два раза.

Вот в benchmarkgames в одном примере разница с растом в несколько раз, а там unsafe через unsafe интрисинками погоняет, когда гошная версия не использует ни того, ни другого.

В приведенной мной статье тоже больше 15% оверхеда, но вполне сопоставимо.

Ответить | Правка | К родителю #43 | Наверх | Cообщить модератору

137. "Релиз языка программирования Go 1.13"  +/
Сообщение от Аноним (137), 05-Сен-19, 15:40 
> Это мои личные наблюдения на прикладной задаче (UDP сервер).

То есть основная работа происходит в ядре ОС. Может так оказаться, что интерпретируемый Erlang покажет те же 15% оверхеда.

Ответить | Правка | Наверх | Cообщить модератору

49. "Релиз языка программирования Go 1.13"  +/
Сообщение от ddjfvcs (?), 04-Сен-19, 16:28 
Оперативку ест.
Ответить | Правка | К родителю #35 | Наверх | Cообщить модератору

80. "Релиз языка программирования Go 1.13"  +/
Сообщение от proninyaroslavemail (ok), 04-Сен-19, 21:10 
Как язык со сборкой мусора можно сравнивать с языком без сборки мусора в плане производительности?
Ответить | Правка | К родителю #35 | Наверх | Cообщить модератору

82. "Релиз языка программирования Go 1.13"  +1 +/
Сообщение от anonismus (?), 04-Сен-19, 21:14 
Напрямую берут и сравнивают, в чем проблема то? И получают вполне сопоставимые результаты.
Ответить | Правка | Наверх | Cообщить модератору

83. "Релиз языка программирования Go 1.13"  +/
Сообщение от proninyaroslavemail (ok), 04-Сен-19, 21:24 
> Напрямую берут и сравнивают, в чем проблема то? И получают вполне сопоставимые
> результаты.

А то что есть накладные расходы это никак никого не волнует? Или же "спецы бенчмарков" пишут такой код, который не использует динамическую память (и соотвественно сборку мусора), гоняя переменные по стеку?

Ответить | Правка | Наверх | Cообщить модератору

87. "Релиз языка программирования Go 1.13"  +/
Сообщение от Урри (?), 04-Сен-19, 21:48 
При правильной организации сборщика мусора (и стратегии выделения памяти) - накладные расходы стремятся к одному проценту.

Например, для целого класса диалектов лиспа (я просто в курсе кода) выделение нового объекта делается так: { new_object = ptr; ptr+=size; }, что в ассемблере выливается в одну единственную команду; точно так же, как и выделение объектов _на_стеке_ в языках без СМ.

Далее, при непосредственно сборке мусора дерево объектов разворачивается (линеаризируется), при этом установкой одного бита отмечаются используемые объекты; далее сворачивается назад (с автоматической очисткой бита) и элементарнейшим образом компактифицируется. И пусть это звучит страшно, на деле занимает 10 строк С кода. Ну 15, ладно.

Зато "магическим" образом неиспользуемые объекты никак вообще не затрагиваются, и просто исчезают.

А теперь сравниваем это с выделением объектов на куче в С, например. И, главное, с освождением оных (и процессом объединения "пустих" зон, с кучей трюков как бы этот алгоритм ускорить и т.д. и т.п.)

Отсюда выводы: пусть даже такие языки и проигрывают в скорости непосредственно исполняемого алгоритма, но во многих классах задач выигрывают очень хорошо.
Например, парсинг и обработка текста. Чисто на реаллокациях строк с++ влегкую проигрывает у того же коммон лиспа. Плата - объемы используемой памяти.

Ответить | Правка | Наверх | Cообщить модератору

106. "Релиз языка программирования Go 1.13"  –2 +/
Сообщение от Урри (?), 05-Сен-19, 02:01 
Ах да, забыл дописать - реализация маллок содержит более 5000 (пяти тысяч) строк кода. С комментариями, конечно же, но!
Это никак не сравнить с 20 строками кода сборщика мусора.
Ответить | Правка | Наверх | Cообщить модератору

149. "Релиз языка программирования Go 1.13"  +1 +/
Сообщение от Anonnn (?), 06-Сен-19, 08:20 
Что за дичь. Покажи мне в пхп, го, джаве или лбом другом сборщик мусора на 20 строк.
Ответить | Правка | Наверх | Cообщить модератору

160. "Релиз языка программирования Go 1.13"  +/
Сообщение от Урри (?), 08-Сен-19, 10:12 
Образовывайся, неуч.
https://gitlab.com/owl-lisp/owl/blob/develop/c/ovm.c#L285

Развелось макак, понимаешь.

Ответить | Правка | Наверх | Cообщить модератору

112. "Релиз языка программирования Go 1.13"  –1 +/
Сообщение от qwerty123 (??), 05-Сен-19, 06:39 
>При правильной организации сборщика мусора (и стратегии выделения памяти)

Угу.

И в конечном итоге будет использоваться аналог malloc()/free() и деревья/таблицы/списки выделения памяти "для правильной организации сборщика мусора" =)

Второе десятилетие вижу идеалистов из школы. Некоторые знатно велосипедят.

Ответить | Правка | К родителю #87 | Наверх | Cообщить модератору

156. "Релиз языка программирования Go 1.13"  +/
Сообщение от anonymous (??), 06-Сен-19, 18:33 
Вещи, которые сильно бьют по GC, можно выгрузить в sync.Pool или переосмыслить (переделать так, чтобы не били по GC), а другие вещи -- и хрен с ним. В результате околоручное управление памятью производится в 5% кода, а GC жрёт лишь 1% CPU.
Ответить | Правка | Наверх | Cообщить модератору

129. "Релиз языка программирования Go 1.13"  +/
Сообщение от proninyaroslavemail (ok), 05-Сен-19, 13:10 
Ну хорошо, в лиспе, а как это к Го относится и к другим языкам? Никто же из них не реализовал подобную модель сборки мусора.
Ответить | Правка | К родителю #87 | Наверх | Cообщить модератору

161. "Релиз языка программирования Go 1.13"  +/
Сообщение от Урри (?), 08-Сен-19, 10:15 
Ну я, как бы, не утверждал что они реализовали.
Я просто указал, что в некоторых задачах сборщик мусора может быть существенно эффективнее.
Ответить | Правка | Наверх | Cообщить модератору

142. "Релиз языка программирования Go 1.13"  +/
Сообщение от Аноним (142), 05-Сен-19, 19:48 
> И пусть это звучит страшно, на деле занимает 10 строк С кода. Ну 15, ладно.

А дотнетчики не догадались, что можно за 15 строк сделать...
https://raw.githubusercontent.com/dotnet/coreclr/master/src/...

Ответить | Правка | К родителю #87 | Наверх | Cообщить модератору

162. "Релиз языка программирования Go 1.13"  +/
Сообщение от Урри (?), 08-Сен-19, 10:15 
Это вопросы к МС. Они, помнится, и ОС умудрились на 15 гигов раздуть.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру