@gogolang

Страница 1387 из 1630
Daniel
11.09.2018
12:46:18
а что вы такое считаете?

Алексей
11.09.2018
12:47:04
воткни в него Goshed :)
лучше кстати не втыкать, а повысить число тредов в пулле и запустить в нескольких горутинах вычисление

чтобы в пулле были свободные треды

Roman
11.09.2018
12:47:17
ну то есть числа дробить надо аккуратно
дело в том, что по сравнению с event loop'ом который блокируется вычислением полностью - горутина блокирует лишь один из системных потоков, не блокируя при этом весь процесс. Однако с правильным подходом к написанию можно обойти и эту проблему просто мануально переключая горутины в алгоритме

Google
Алексей
11.09.2018
12:48:44
а что вы такое считаете?
приходилось когда-то давно считать кое-какие показатели кое-каких случайных процессов траекторий случайных процессов приходилось генерировать очень много но я правда на крестах это писал

и в принципе для таких числодробилок как раз считаю кресты наилучшим вариантом

Daniel
11.09.2018
12:49:21
это очень, очень редкая задача

если бы у нас были такие задачи - мы бы провели чемпионат, и выяснили бы, что там лучше и где

Roman
11.09.2018
12:50:53
Ну так то вычисления на той же node js - это полюбому плохая идея
Это на основе чего был сделан такой вывод?

Алексей
11.09.2018
12:51:00
даже если в другие процессы выносить

Это на основе чего был сделан такой вывод?
ну не дробят на динамически типизированных языках числа

Evgeny
11.09.2018
12:54:15
ну не дробят на динамически типизированных языках числа
как раз на них и дробят, например на python + pandas + numpy + scipy

Google
Daniel
11.09.2018
12:55:02
с чем?

Алексей
11.09.2018
12:55:21
как раз на них и дробят, например на python + pandas + numpy + scipy
да, но только питон выступает в роли обвязки, сами числодробилки фактически на C/C++ написаны, либо вообще на GPU уходят

Roman
11.09.2018
12:55:32
Фактически, у нас имеется два пула: один для вычислений, а второй для ввода-вывода. Динамический растет только тот, который для ввода вывода

Алексей
11.09.2018
12:56:29
Да, но ты же при этом не пишешь сишный код :)
это потому что его заранее написали

то есть питон фактически только дёргает, а вычисляет сишка

Roman
11.09.2018
12:57:10
Это на основе чего был сделан такой вывод?
динамический язык в число-дробилках будет практически всегда медленее по причине своей динамики о чём говорят многочисленные бенчмарки включая всем известный https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/go-node.html. это как в 3D графике, либо быстрая статика, либо дорогая динамика (think of lighting calculation). event loop это хорошо для I/O, но вычисления блокирующие весь event loop это вообще не гут. можно конечно разбить процесс на несколько процессов или воркеров внутри процесса, но это порадит новые проблемы такие как shared state, который придётся реализовывать через какую-то БД, либо IPC что гораздо сложнее и затратнее по производительности. У каждого языка/платформы есть свои сильные и слабые стороны. JavaScript подходит далеко не везде и бэкэнд API для продакшена на нём лучше не писать если есть выбор.

?? Eugene
11.09.2018
12:57:14
И неплохо вычисляет

Алексей
11.09.2018
12:57:24
и если нужно сделать что-то совсем кастомное, что не предусмотрено питоновскими либами, то тут уже питон будет больше мешать, чем помогать

Алексей
11.09.2018
12:58:45
динамический язык в число-дробилках будет практически всегда медленее по причине своей динамики о чём говорят многочисленные бенчмарки включая всем известный https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/go-node.html. это как в 3D графике, либо быстрая статика, либо дорогая динамика (think of lighting calculation). event loop это хорошо для I/O, но вычисления блокирующие весь event loop это вообще не гут. можно конечно разбить процесс на несколько процессов или воркеров внутри процесса, но это порадит новые проблемы такие как shared state, который придётся реализовывать через какую-то БД, либо IPC что гораздо сложнее и затратнее по производительности. У каждого языка/платформы есть свои сильные и слабые стороны. JavaScript подходит далеко не везде и бэкэнд API для продакшена на нём лучше не писать если есть выбор.
Ну нода вообще была походу вытесненна Go в довольно узкую нишу (Server Side Rendering и сборка фронта).

Roman
11.09.2018
12:59:21
Ну нода вообще была походу вытесненна Go в довольно узкую нишу (Server Side Rendering и сборка фронта).
да, в SSR нода неизбежна и там она как-раз занимает свою нужную нишу.

Roman
11.09.2018
13:00:00
Не сложнее, он просто менее эффективен.
Что не сложнее? concurrency на потоках не сложнее горутин?

Alexander
11.09.2018
13:01:45
Что не сложнее? concurrency на потоках не сложнее горутин?
Синхронный многопоточный код не сложнее асинхронного.

Roman
11.09.2018
13:03:26
Синхронный многопоточный код не сложнее асинхронного.
сложнее, я там был, код лепил, по потокам текло в буфер не попадало. в асинхронном коде тебе нужно заботиться о том, чтобы не заблокировать event loop, там блокировать ни в коем случае нельзя! async/await значительно облегчает написание асинх кода, но тем не менее это не Go, где писать блокирующий код - норма.

Roman
11.09.2018
13:04:41
хм?
Есть примеры когда v8/luajit быстрее go.

Google
Roman
11.09.2018
13:05:31
Есть примеры когда v8/luajit быстрее go.
может быть, но в целом производительноть и эффективность по памяти скорее за статикой чем за динамикой

Есть примеры когда v8/luajit быстрее go.
а какие собственно есть примеры?

Maruf
11.09.2018
13:06:31
ребят подскажите,Вопрос по gorilla, значение ключа session.Values["authenticated"] <nil> : var store = sessions.NewCookieStore(key) глобальная переменная, когда задаем session.Values["authenticated"] = true в методе, который находится в controllers.go В другом методе, который находится в middleware.go где требуется значение session.Values["authenticated"] , выдается <nil>, если название куки прописаны одинаково вывел session из session, err := store.Get(r, "session") в middleware, мэпы пустые не пойму почему не берет значение, если все они в одном пакете

Roman
11.09.2018
13:06:46
Это сложности асинхронного кода.
а какие сопоставимые сложности синхронного кода в стиле Go?

не сложнее
сильное заявление.. правда необоснованное, но это же неважно, главное мнение иметь))

Алексей
11.09.2018
13:07:31
не сложнее
ну точнее чуть сложнее тем, что там надо самому пулл потоков делать

а так всё тоже самое

Алексей
11.09.2018
13:07:54
просто менее эффективно конечно же

Roman
11.09.2018
13:07:57
а так всё тоже самое
абсолютно не тоже самое. я всё уже выше описал

Алексей
11.09.2018
13:08:36
абсолютно не тоже самое. я всё уже выше описал
ты про асинхронный код написал

а мы про синхронный многопоточный говорим

Roman
11.09.2018
13:09:03
> сложный язык Я понимаю, когда этим словосочетанием обзывают языки Java/C/C++. Но в других языках то откуда сложность?
на такой размытый вопрос могу лишь размыто ответить: у каждого языка есть свои сложности.

Roman
11.09.2018
13:09:41
а какие собственно есть примеры?
Математика. Тот же pypy умеет автовекторизацию в sse, а luajit еже более продвинут в этом плане

Roman
11.09.2018
13:09:44
а мы про синхронный многопоточный говорим
я говорю про синхронный не-блокирующий код в стиле Gо, а не про синхронный в стиле C/C++, это, товарищ, вещи абсолютно разные

Alexander
11.09.2018
13:10:08
Roman
11.09.2018
13:11:28
Математика. Тот же pypy умеет автовекторизацию в sse, а luajit еже более продвинут в этом плане
я-же собственно именно об этом и говорил, что питон подходит для склеивания высокопроизводительных модулей. Где heavy-lifting делают C++ модули а питон лишь организуют между ними связь.

Алексей
11.09.2018
13:11:54
я говорю про синхронный не-блокирующий код в стиле Gо, а не про синхронный в стиле C/C++, это, товарищ, вещи абсолютно разные
Синхронный многопоточный код не сложнее асинхронного. Это в принципе справедливо даже если под асинхронным понимать код Go.

Google
Roman
11.09.2018
13:12:43
Синхронный многопоточный код не сложнее асинхронного. Это в принципе справедливо даже если под асинхронным понимать код Go.
Go код не асинхронен, код синхронен, а вот его выполнение - не обязательно. В этом то и прелесть написания Go кода.

Алексей
11.09.2018
13:14:48
Roman
11.09.2018
13:15:04
Синхронный многопоточный код не сложнее асинхронного. Это в принципе справедливо даже если под асинхронным понимать код Go.
да и вообще утверждение о том что синх. конкр. код настолько-же "прост" как async в корне неверно если учитывать shared state. mutable shared state это мать всех сложных багов и в многопоточном программирование она доминирует. в async коде нет конкурентности, там в принципе нет такого понятия как concurrency primitives, locks, data races (правда race conditions могут быть)

Алексей
11.09.2018
13:17:15
Roman
11.09.2018
13:17:53
Коллеги, кто использует/натыкался на инсталлер (bash/py), который понимает, какие GOOS and GOARCH на клиентской системе и качает соответсвтующий бинарь из S3/etc?

Roman
11.09.2018
13:20:47
я писал многопоточный C/C++: - mutable shared state. - thread'ы дорогие, с ними надо аккуратно. + очень гибкая модель и очень производительная, в умелых руках. я писал асинхронный JS: + event loop безопаснее в плане конкурентности, никаких data race'ов, мутексов и т.д. + I/O не блокирует - блокировать нельзя (!) - асинх конструкции кода без async/await это ад - логика однопоточна по умолчанию и сейчас я пишу на Go: - mutable shared state, однако каналы порой спасают + блокировать можно, никакой асинхронщины в коде + неблокирующее многопоточное исполнение по умолчанию + горутины очень дешёвые, любое конкр. задание можно запустить в своём "потоке" и для web'а (и возможно даже application development'а) гошная модель конкурентности подходит лучше всего. Она достаточно мощная и при этом более простая.

Artem
11.09.2018
13:21:52
кто чем визуализирует zipkin dependencies? встроенного уже не хватает

Daniel
11.09.2018
13:22:23
подскажите?) ANY?
https://stackoverflow.com/questions/20271123/how-to-execute-an-in-lookup-in-sql-using-golang, второй ответ (который с It looks like you may be using the pq driver. начинается)

Admin
ERROR: S client not available

Daniel
11.09.2018
13:22:54
коллеги, а о чем вы трете?

Roman
11.09.2018
13:23:09
коллеги, а о чем вы трете?
поясняю людям сильные и слабые стороны Go)

Roman
11.09.2018
13:23:38
ты наш герой?
вам решать, не мне))

Алексей
11.09.2018
13:24:13
я писал многопоточный C/C++: - mutable shared state. - thread'ы дорогие, с ними надо аккуратно. + очень гибкая модель и очень производительная, в умелых руках. я писал асинхронный JS: + event loop безопаснее в плане конкурентности, никаких data race'ов, мутексов и т.д. + I/O не блокирует - блокировать нельзя (!) - асинх конструкции кода без async/await это ад - логика однопоточна по умолчанию и сейчас я пишу на Go: - mutable shared state, однако каналы порой спасают + блокировать можно, никакой асинхронщины в коде + неблокирующее многопоточное исполнение по умолчанию + горутины очень дешёвые, любое конкр. задание можно запустить в своём "потоке" и для web'а (и возможно даже application development'а) гошная модель конкурентности подходит лучше всего. Она достаточно мощная и при этом более простая.
mutable shared state и в го можно спокойно организовать асинхронный JS однопоточен, но это скорее исключение из правил, чем правило, ибо есть языки, которые и в async/await могут и в потоки (Python, C#, C++20) Так что на самом деле основная киллерфича Go - это лёгкие горутины и отсутствие необходимости явно работать с тред пуллом.

Daniel
11.09.2018
13:24:18
мы же все понимаем, что для производительности более-менее все равно, что там за инструкции. важно, насколько часто мы инвалидируем кеш проца, и насколько сильно огорчаем предсказателя

Roman
11.09.2018
13:24:21
коллеги, а о чем вы трете?
У меня простой поинт: пока в го нет автовекторизации любой язык что её умеет будет быстрее

Roman
11.09.2018
13:24:34
В хаскеле получше таки модель.
хорошо иметь мнение, но ещё лучше иметь это мнение обосновать)

Daniel
11.09.2018
13:24:35
быстрее в чем?

Google
Roman
11.09.2018
13:24:49
быстрее в чем?
В математике

Daniel
11.09.2018
13:24:57
возможно

можно взять конкретную задачу, и померять

Alexander
11.09.2018
13:25:56
хорошо иметь мнение, но ещё лучше иметь это мнение обосновать)
Всё то же самое, но STM, вместо мьютексов и каналов.

Evgeny
11.09.2018
13:26:11
В многопоточном приложении главное свести взаимодействие между потоками к минимуму, если это сделано, то все равно, на чем построено взаимодействие между ними, на каналах, на мьютексах или на IPC.

?? Eugene
11.09.2018
13:27:03
Такой вопрос, какой идешкой пользуетесь?

Roman
11.09.2018
13:27:17
Всё то же самое, но STM, вместо мьютексов и каналов.
shared mutable state без мьютексов говорите? что-то я вам не верю, коллега

Алексей
11.09.2018
13:27:42
?? Eugene
11.09.2018
13:28:12
VSC
Там плагин нужен какой-то?

Roman
11.09.2018
13:28:31
Там плагин нужен какой-то?
https://code.visualstudio.com/docs/languages/go

Алексей
11.09.2018
13:28:39
И вообще я всё веду к тому, что обычный многопоточный код не сильно сложнее кода на Го, он просто гораздо менее эффективный при нагрузках, только и всего.

?? Eugene
11.09.2018
13:28:42
Алексей
11.09.2018
13:29:54
Roman
11.09.2018
13:30:08
И вообще я всё веду к тому, что обычный многопоточный код не сильно сложнее кода на Го, он просто гораздо менее эффективный при нагрузках, только и всего.
что?!))) обычный многопоток на C++/Rust/Java может быть гораздо эффективнее Goroutine. Но писать его будет гораздо сложнее)) вы думаете green thread'ы зря чтоль придумали, если на простых потоках и без того легко писать?)))

Алексей
11.09.2018
13:31:20
что?!))) обычный многопоток на C++/Rust/Java может быть гораздо эффективнее Goroutine. Но писать его будет гораздо сложнее)) вы думаете green thread'ы зря чтоль придумали, если на простых потоках и без того легко писать?)))
Я ещё раз повторяю. Можно спокойно написать многопоточный код, который будет практически совпадать с кодом на Го, просто он будет куда менее эффективным, потому что вместо горутин там будут обычные потоки.

Страница 1387 из 1630