@proGO

Страница 1664 из 1674
Roman
28.08.2018
15:58:37
короче very very very deep optimization, который уже не актуален?

@floyernick issue?

Никита
28.08.2018
15:59:17
Дам вам эту возможность)

Kirill
28.08.2018
16:00:02
короче very very very deep optimization, который уже не актуален?
йап. но если на сервере два или более процессора, запускайте отдельные инстансы приложения на каждый отдельный процессор. можно через reuseport

Google
Roman
28.08.2018
16:00:42
может стоит таки лучше продокументировать такие моменты?

Kirill
28.08.2018
16:01:41
на моём тестовом стенде разница была от 15%

Kirill
28.08.2018
16:02:23
wait, you mean отдельные socketed CPU? аа, я просто изначально подумал ты про ядра
не о ядрах, и не о тредах, а об отдельных процессорах

Roman
28.08.2018
16:02:53
не о ядрах, и не о тредах, а об отдельных процессорах
да, вот это стоит конкретно выделить

Илья
28.08.2018
16:05:21
нахера 4 рантайма в отдельных процессах нежели 1 рантайм с 4 горутинами?
4 шедулера, которые будут утилизировать каждый свой камень, меньше переключений контекста, кэш миссов и прочего

Roman
28.08.2018
16:05:57
4 процесса будут лучше
только никто так пока и не объяснил почему собственно

Google
Daniel
28.08.2018
16:06:09
они про кеш

Roman
28.08.2018
16:06:09
все это про so_reuseport

Roman
28.08.2018
16:07:42
интерсная тема, надо будет с webwire-go тоже в этом плане поэксперементировать с несколькими процессами как только время появится

Илья
28.08.2018
16:08:39
lock contention
хм, будет аффектить если шедулер между ядрами таскает? а можно попросить на почитать что-то

Roman
28.08.2018
16:09:39
Daniel
28.08.2018
16:10:18
коллеги, ну имейте совесть! ну не даст на реальном приложении это никакого прироста.

Roman
28.08.2018
16:10:55
коллеги, ну имейте совесть! ну не даст на реальном приложении это никакого прироста.
вроде-ж о каких-то 15% шла речь? но опять-же нужно бенчмаркить самому..

Kirill
28.08.2018
16:11:16
народ, выдыхайте

у вас на реальном проекте часто на одном сервере >= 2 процессора?

Илья
28.08.2018
16:11:41
вроде-ж о каких-то 15% шла речь? но опять-же нужно бенчмаркить самому..
если ваше приложение в своей логике работает за время, сравнимое с обработкой http заголовков, то такая оптимизация может быть годной

у вас на реальном проекте часто на одном сервере >= 2 процессора?
бывало и такое :) правда сейчас все чаще облака, и там никому нельзя верить

Roman
28.08.2018
16:12:32
в любом случае 15% прироста производительности, в 90% приложений, если не 95%, скорее всего можно спокойно завалить железом нежели тратить мозги и нервы

но если писать какой-нибудь ultra-low-latency 144hz 64 slot game server который хер расспараллелишь.. то...

Daniel
28.08.2018
16:15:02
вроде-ж о каких-то 15% шла речь? но опять-же нужно бенчмаркить самому..
15% от чего? от тех 5%, что идут на fasthttp в реальном приложении?

Kirill
28.08.2018
16:16:25
15% от чего? от тех 5%, что идут на fasthttp в реальном приложении?
нет. на 15% быстрее становилась работа относительно работы приложения в целом. тест не синтетический, на продовом коде обкатывался.

Roman
28.08.2018
16:17:43
ну я думаю можно довольно просто реализовать запуск серверов конфигурируемым либо в горутинах либо в child-процессах по желанию и проверить

Kirill
28.08.2018
16:18:41
вот-вот.

Google
Roman
28.08.2018
16:22:46
afaik, там проблема в том что для accept() надо взять лок и при большом количестве новых коннектов треды будут за него драться

даже если у нас модель, в которой только 1 тред может делать accept, то хоть contention и не будет, но мы будем лимитированы скоростью с которой этот единственный тред делает accept()

https://domsch.com/linux/lpc2010/Scaling_techniques_for_servers_with_high_connection%20rates.pdf

Roman
28.08.2018
16:29:41
So.. windows is not supported? what a shame, Microsoft ?

Roman
28.08.2018
16:29:50
и GOMAXPROCS=1 рекомендуется для решения "bouncing problem" в этой pdf

Solved: The accepting thread is the processing thread

Kirill
28.08.2018
16:30:55
но я заметил, что проставляя gomaxprocs=1, ты теряешь производительность в других местах

для себя я выбрал не ставить gomaxprocs тогда, когда это можно не делать

Roman
28.08.2018
16:31:45
но я заметил, что проставляя gomaxprocs=1, ты теряешь производительность в других местах
смотря где. во многих задачах локальность даёт куда больше пользы, чем любые игры в несколько потоков

Kirill
28.08.2018
16:32:13
конечно, нужно смотреть конкретный кейс

естественно

Roman
28.08.2018
16:33:14
хорошо что в Go можно относительно просто написать многопоточный код и его ограничить по желанию

Kirill
28.08.2018
16:34:28
если автор кода не сломает всё удобство самостоятельно

Илья
28.08.2018
16:35:18
Alexey
28.08.2018
16:36:53
https://blog.golang.org/go2draft

Roman
28.08.2018
16:39:13
https://blog.golang.org/go2draft
интересно, Russ - харизматичный чувак

Kirill
28.08.2018
16:39:39
https://blog.golang.org/go2draft
как-то инфа в чатах запаздывать начинает %)

Alexey
28.08.2018
16:39:46
На мой взгляд, видео жутковатое. Тексты ещё читаю

Google
Kirill
28.08.2018
16:41:24
за кадром будто бы кто-то с пистолетом и битой стоит

Kirill
28.08.2018
16:47:22
ещё и минута в конце — тупо ссылка

Roman
28.08.2018
16:48:06
ещё и минута в конце — тупо ссылка
it's by design! как в прочем и всё странное в Go ?

Alexey
28.08.2018
16:55:25
Это чтобы успокоится

Kirill
28.08.2018
16:56:05
это забыли камеру выключить, перед тем как обратно к батарее привязывать

Roman
28.08.2018
16:58:29
handle err { } check CanReturnErr() интересная конструкция но пока не понятно как это будет работать, что если функция 2 ошибки возвращает? или например сначала ошибку а потом значение err, val?

Alexey
28.08.2018
17:04:43
Надеюсь, что никак

Если ты делаешь что-то такое странное, то лучше сделать это более заметным

Кстати: https://go.googlesource.com/proposal/+/master/design/go2draft-error-handling.md

Никита
28.08.2018
17:08:38
Вот штука с обработкой ошибок выглядит как корявый синтаксический сахар ?

С дженериками вообще непонятно как то

Roman
28.08.2018
17:13:57
С дженериками вообще непонятно как то
с дженериками всё понятнее чем с обработкой ошибок. есть определённые "трейты" (типа "тип должен быть сравнимым" или что-то на подобии) которые тип должен выполнить для того чтоб использоваться в той или иной generic среде

по принципу интерфейсов

Никита
28.08.2018
17:17:43
А, ну вполне

Владимир
28.08.2018
18:58:13
А кто-нибудь дружил WSL и Goland, чтобы под Windows не надо было ставить go? Так можно вообще?

Владимир
28.08.2018
19:05:11
нафига?
Интересно.

Igor
28.08.2018
19:06:54
А кто-нибудь дружил WSL и Goland, чтобы под Windows не надо было ставить go? Так можно вообще?
Должен подойти вот этот пример https://github.com/Microsoft/vscode/issues/22391#issuecomment-317482983 Но он про vscode, а не goland, и про php, а не go (и не выйграл, а проиграл). Но суть должна быть понятна

Google
deepIP
28.08.2018
21:52:52
Ребят, кто на go делал авторизацию/регистрацию? Есть готовые решения?

Roman
28.08.2018
21:53:31
deepIP
28.08.2018
21:56:19
авторизацию/регистрацию чего и где?
Есть приложение, нужно организовать систему регистрации и авторизации пользователей. По ролям.

deepIP
28.08.2018
22:20:53
Александр
28.08.2018
23:52:43
по поводу тестов

я тут делал тестовое для одно синей компании, сделал тесты DAO через интерфейсы этого же дао (тобишь мокаю уже логику) и они зашили меня именно на этом моменте. Типо "надо было мокать драйвер"

но мокать драйвер убого как мне кажется, он может меняться же

хз кто тут не прав

они говорят "мокать логику" слишком много тестов придется писеть типо

Александр
29.08.2018
00:08:20
ну "такое"

DAO то как раз делают что бы красиво переехать на другое хранилище

Страница 1664 из 1674