
Daniel
11.09.2018
12:46:18
а что вы такое считаете?

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

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

Google

Roman
11.09.2018
12:47:54

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

Daniel
11.09.2018
12:49:21
это очень, очень редкая задача
если бы у нас были такие задачи - мы бы провели чемпионат, и выяснили бы, что там лучше и где

Алексей
11.09.2018
12:50:24

Roman
11.09.2018
12:50:53

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

stixlink
11.09.2018
12:53:15

Evgeny
11.09.2018
12:54:15

Roman
11.09.2018
12:54:41

Google

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

Алексей
11.09.2018
12:55:21

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

?? Eugene
11.09.2018
12:56:14
Или фортрановский

Алексей
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
и если нужно сделать что-то совсем кастомное, что не предусмотрено питоновскими либами, то тут уже питон будет больше мешать, чем помогать

?? Eugene
11.09.2018
12:58:34

Алексей
11.09.2018
12:58:45

Roman
11.09.2018
12:59:21

Roman
11.09.2018
12:59:34

Alexander
11.09.2018
12:59:58

Roman
11.09.2018
13:00:00

Alexander
11.09.2018
13:01:45

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

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

Google

Alexander
11.09.2018
13:04:42

Roman
11.09.2018
13:05:31

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, мэпы пустые
не пойму почему не берет значение, если все они в одном пакете

Алексей
11.09.2018
13:06:46

Roman
11.09.2018
13:06:46
не сложнее
сильное заявление.. правда необоснованное, но это же неважно, главное мнение иметь))

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

Alexander
11.09.2018
13:07:50

Алексей
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

Roman
11.09.2018
13:09:41

Roman
11.09.2018
13:09:44

Alexander
11.09.2018
13:10:08

Roman
11.09.2018
13:11:28

Алексей
11.09.2018
13:11:54

Google

Roman
11.09.2018
13:12:43

Алексей
11.09.2018
13:14:48

Roman
11.09.2018
13:15:04

Алексей
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. начинается)

Roman
11.09.2018
13:22:26

Admin
ERROR: S client not available

Alexander
11.09.2018
13:22:32

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

Roman
11.09.2018
13:23:09

Artem
11.09.2018
13:23:27

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

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

Roman
11.09.2018
13:26:27

Roman
11.09.2018
13:26:58

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

Roman
11.09.2018
13:27:17

Алексей
11.09.2018
13:27:42

Roman
11.09.2018
13:27:48

Roman
11.09.2018
13:27:57

Roman
11.09.2018
13:27:59

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

Roman
11.09.2018
13:28:31

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

?? Eugene
11.09.2018
13:28:42

Roman
11.09.2018
13:29:50

Алексей
11.09.2018
13:29:54

Roman
11.09.2018
13:30:08

Roman
11.09.2018
13:30:34

Алексей
11.09.2018
13:31:20