The OpenNET Project / Index page

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



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

Оглавление

Доступен язык программирования Go 1.6, opennews (ok), 18-Фев-16, (0) [смотреть все]

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


34. "Доступен язык программирования Go 1.6"  +/
Сообщение от Никто (??), 18-Фев-16, 19:47 
Я не писал о проблемах производительности. Я указал на то, что утверждение:

>Код на языке Go компилируется в обособленные бинарные исполняемые файлы,
>выполняемые нативно без использования виртуальной машины (...), что позволяет
>добиться производительности, сопоставимой с программами на языке Си

Является ошибочным.

По поводу доказательств. Посмотрите, кто соседствует друг с другом в тестах скорости:
http://benchmarksgame.alioth.debian.org/u64q/which-programs-...
Раньше этот тест был более информативным:
http://web.archive.org/web/20150923053032/http://benchmarksg...

Поинтересуйтесь, почему в блоге разработчиков так радуются улучшению производительности сборщика памяти:
https://blog.golang.org/go15gc

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

46. "Доступен язык программирования Go 1.6"  +/
Сообщение от freehckemail (ok), 18-Фев-16, 22:11 
Прошу простить мне неграмотность, однако не подскажете ли Вы мне также, что я должен знать, чтобы понимать эти графики? Я нигде не нашёл описания подобного рода графиков, хотя совершенно точно видел их уже не раз. Я боюсь, что читаю их не правильно.

1) Что значит жирная линия посередине столбца? Это среднее значение всех программ, участвовавших в тесте?

2) Что означает белый столбец, внутри которого содержится линия? Это разброс всех замеренных результатов?

3) Что означают чёрные палочки под и над столбцом? Это погрешности измерений?

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

66. "Доступен язык программирования Go 1.6"  +/
Сообщение от Никто (??), 19-Фев-16, 13:53 
Это графики для визуализации статистических данных. Можете почитать про боксплоты в "Наглядная статистика. Используем R" биолога Шипунова. Если лень - просто ориентируйтесь на жирную горизонтальную линиию - медиану.
Ответить | Правка | Наверх | Cообщить модератору

47. "Доступен язык программирования Go 1.6"  +1 +/
Сообщение от freehckemail (ok), 18-Фев-16, 22:41 
Окей, значит я пока понял это дело так. Go процентов на 30% шустрее Java, но оба они примерно в 2 раза медленнее C.
http://benchmarksgame.alioth.debian.org/u64q/compare.php?lan...

Результат, в принципе, интересный. Меня также удивляет, что OCaml оказался позади Java и Scala, хотя на данный момент, как утверждают некоторые товарищи из Inria, он обладает самым быстрым GC, пускай и однопоточным: при столь малых размерах получаемых бинарей программы на Ocaml могут позволить себе форки, и забить на треды.

Ещё такой момент: я не понимаю, каким образом у Java/Scala получаются такие хорошие результаты. Это AOT тому причиной? Я вот чего не знаю наверняка:
1) Jar-ники с jvm-байткодом можно полностью перегнать в нативный код для ускорения программы после старта?
2) В jvm есть gc, но ходят слухи, что работает он так "хорошо", что сжирает вообще все русурсы CPU, и потому его отключают. Вам известно, как дела обстоят на самом деле?

По поводу радости разработчиков Go улучшению производительности gc, думаю, тут всё весьма очевидно. Заставить хорошо работать многопоточный gc - та ещё головная боль, ocaml-исты с этой задачей уже собаку съели, но до сих пор не сделали. Если у Go он работает, причём быстро - так это большая победа.

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

48. "Доступен язык программирования Go 1.6"  +1 +/
Сообщение от freehckemail (ok), 18-Фев-16, 23:05 
> 1) Jar-ники с jvm-байткодом можно полностью перегнать в нативный код для ускорения программы после старта?

Так с этим вроде стало яснее. Был AOT-compiler GCJ из набора, который похоже загнулся, ибо последние обновления датированы 2009-м. Сейчас осталось проприетарное поделие Excelsior JET, которое, впрочем, уже поддерживает восьмёрку.

Я так понял, что они перегоняют набор jar-ников в бинарь. А в самих jar-никах содержится исключительно jvm-байткод. Всегда.

Попровьте меня, если где-то ошибся.

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

58. "Доступен язык программирования Go 1.6"  –4 +/
Сообщение от Лютый жабист (?), 19-Фев-16, 05:26 
> Окей, значит я пока понял это дело так. Go процентов на 30%
> шустрее Java, но оба они примерно в 2 раза медленнее C.

Ты неправ. Во первых задачи бывают разные, я сталкивался с реальными задачами, на которых java быстрее си.

Во вторых, при большой сложности проекта java/c получается деление на ноль, т.к. на си надо бесконечное количество программистов с бесконечно крутыми познаниями на бесконечное время.

Ну, а так, в теории да, "сферическовакуумная сишечка быстрее в 2 раза".

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

59. "Доступен язык программирования Go 1.6"  –5 +/
Сообщение от Лютый жабист (?), 19-Фев-16, 05:31 
> 2) В jvm есть gc, но ходят слухи, что работает он так
> "хорошо", что сжирает вообще все русурсы CPU, и потому его отключают.
> Вам известно, как дела обстоят на самом деле?

Странно иметь какие-то мнение по вопросу вообще не будучи в теме. Сборщик мусора в java-программах часто вообще не запускается.

На очень жирных программах, в духе - системная интеграционная шина огромной организации, которая имеет потребление порядка 20ГБ ОЗУ и лютое количество enterprise java bean-ов ("потоков") может например срабатывать раз в 6-10 часов и тормозить программу на пару-тройку секунд. И что? Кто лучше-то может?

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

67. "Доступен язык программирования Go 1.6"  +1 +/
Сообщение от Никто (??), 19-Фев-16, 15:05 
>2) В jvm есть gc, но ходят слухи, что работает он так "хорошо", что сжирает вообще все
>русурсы CPU, и потому его отключают

GC в Oracle JVM работает куда лучше для модели Java чем GC в Go, но разработчики инструментария для Go не стоят на месте.
Потенциально Go предоставляет возможность для большей эффективности при работе с памятью поскольку в отличии от Java позволяет размещать переменные структурного типа статически. На практике это может никак не проявиться, потому что это сложнее, особенно для бывшего Джависта, который тянет в Go патерны из Java. С другой стороны, JVM в ряде случаев способна провести оптимизацию и разместить динамические с точки зрения языка данные статически. Это не говоря уже о AOT, который позволяет провести более глубокую оптимизацию за счёт меньших ограничений на время компиляции. С другой стороны JIT позволяет получить профиль использования программы и делать оптимизацию более предметно.

Вообще, в современном мире невменяемо сложных техник компиляторов и процессоров очень сложно разобраться что быстрее чего(обратите внимание, что результаты тестирования довольно существенно отличаются для разных процессоров).

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

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

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




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

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