@gogolang

Страница 1550 из 1630
Pavel
13.10.2018
11:26:19
hint -- посмотри чему равно b.N

Alexander
13.10.2018
11:26:45
Тоесть существование канала как глобальной переменной пакета, в который мы складываем из n количества мест и читаем в одном месте для того чтобы писать в базу, это в корне не верное решение?

Vasiliy
13.10.2018
11:27:27
@selslack ну конечно я сто лет пишу бенчмарки и не знаю что такое b.N

Google
Alexander
13.10.2018
11:28:07
Alexander
13.10.2018
11:29:05
Хорошо )

Nikolay
13.10.2018
11:29:11
Зависит каждый раз от задачи, конечно, и от организации кода, но в целом ничего такого в этом нет

Pavel
13.10.2018
11:29:26
Возможно у тебя никогда не выстрелит это приложение или функционал -- и зачем тратить время на overengineering?

Vasiliy
13.10.2018
11:31:33
goos: darwin goarch: amd64 b.N=1,duration=211ns b.N=100,duration=54.442µs b.N=10000,duration=78.04285ms b.N=200000, ... висит уже минут 10

Vasiliy
13.10.2018
11:33:24
@selslack а ты хорош ванговать, хотя бы уточнил используется ли он вообще )

Pavel
13.10.2018
11:34:04
ну мне че из тебя все детали выпытывать что ли

посмотри сколько памяти у процесса

и сколько CPU

и на дарвине по умолчанию есть своп, да

Google
Pavel
13.10.2018
11:36:05
че там ванговать

Vasiliy
13.10.2018
11:36:38
своп практически ноль и страницы этого бенчмарка туда не мапятся

Nikolay
13.10.2018
11:37:31
Медленный своп на системе с ссд?

Pavel
13.10.2018
11:38:11
Медленный своп на системе с ссд?
не вангуй, может у него 12 года модель

Vasiliy
13.10.2018
11:38:20
у меня пока одна догадка, что macos достаточно умный и замедляет аллокацию для таких процессов

Pavel
13.10.2018
11:38:57
так че ты скинешь сюда cpu/memory процесса?

Vasiliy
13.10.2018
11:40:50
@selslack память - около 5Гб (из 16), cpu - занял два ядра полностью (из 8) и висит

Alexander
13.10.2018
11:42:16
а вот в блок инит нельзя складывать ничего, что зависит от других пакетов или конфига.
там считывание конфига, проверка его правильности думаю ничего не потеряю, если перенесу в мейн, спасиб за советы

Vasiliy
13.10.2018
11:42:34
да в итоге его отпускает, все таки не завис, но какая-то блокировка со стороны аллокаций есть

Pavel
13.10.2018
11:42:49
Vasiliy
13.10.2018
11:43:02
pressure вырос, swap нет

Alexander
13.10.2018
11:43:30
да в итоге его отпускает, все таки не завис, но какая-то блокировка со стороны аллокаций есть
Замечал похожее поведение при получении из базы 200к+ строк, тож перебор задумывался, при этом 150к отлично сканились

Zver
13.10.2018
11:43:32
Ядра же полностью закручены во время выполнения?

Daniel
13.10.2018
11:43:43
там считывание конфига, проверка его правильности думаю ничего не потеряю, если перенесу в мейн, спасиб за советы
порядок инициализации пакетов никто не гарантирует, поэтому там может начаться трудноотлаживаемая каша сделаейте Init() и позовите его из main()

Vasiliy
13.10.2018
11:43:59
@koziavka нет, load = 2.66 из 8

Zver
13.10.2018
11:44:46
@koziavka нет, load = 2.66 из 8
А ядра которые задействованы полностью загружены?

Vasiliy
13.10.2018
11:44:50
да

Pavel
13.10.2018
11:45:04
да
pprof тебе в помощь

Google
Pavel
13.10.2018
11:45:09
точно поставишь диагноз

в ините запусти его ?

Vasiliy
13.10.2018
11:45:30
pprof то причем ) я хотел просто аллокации в этом простом бенчмарке глянуть

аа или ты про проверить блок аллокаций?

ну можно да

Nick
13.10.2018
11:46:06
Gc раком встал?

Pavel
13.10.2018
11:48:13
ну там каждый раз создается строка более длинная

и на 200к у тебя будут идти супер большие аллокации

ты видишь что у тебя за агоритм то? ?

Zver
13.10.2018
11:49:35
Тут надо преалоцировать. разу большой кусок памяти.

Pavel
13.10.2018
11:50:08
Посмотри на https://golang.org/pkg/strings/#Builder

Nick
13.10.2018
11:50:15
Тут не надо писать такие бенчмарки

Zver
13.10.2018
11:50:45
Тут и без билдера можно обойтись.

Vasiliy
13.10.2018
11:54:56
@selslack нет алгоритма ) цель - не проверить работающий код, а проверить как работает Go. и я знаю что этот тест не имеет линейную характеристику, так как итерация зависит от результата предыдущей, просто интересно было что он вдруг подвис так странно

топ цпупрофайлера выглядит как-то так... 28.05% runtime.pthread_cond_signal 23.00% runtime.pthread_cond_wait 14.75% runtime.kevent 9.40% runtime.usleep

так что большую часть времени он ждет ядро

интересно ща попробую на linux это запустить там скорее всего его убъет oom killer

Pavel
13.10.2018
12:00:39
до 10000к у тебя наверное данные в кешик уютный влазили, а сейчас ходят в память, плюс большие аллокации -- это много страниц и ты каждый раз читаешь из старого и пишешь в новое

Vasiliy
13.10.2018
12:18:25
на linux так же, долго висит просто *** Test killed with quit: ran too long (10m0s). signal: segmentation fault

Pawel
13.10.2018
12:53:38
почему у меня напрашивается сразу вопрос, а зачем придумали зло?(
внезапно много чего придумали - unsafe, рефлекшн например. Что ни разу не означает что это надо вам использовать

Google
Pawel
13.10.2018
12:54:14
я ещё разок спрошу - джулисты есть чятике?

Nikolay
13.10.2018
12:58:02
внезапно много чего придумали - unsafe, рефлекшн например. Что ни разу не означает что это надо вам использовать
я бы пошел дальше и сказал, что если у разраба возникает сильное желание юзать рефлект в проекте - есть серьезный шанс, что он делает что-то не то, либо недостаточно знает го

Alexander
13.10.2018
12:58:03
внезапно много чего придумали - unsafe, рефлекшн например. Что ни разу не означает что это надо вам использовать
Но этим же пользуются? Мне на примере моего решения просто сказали, ты не пользуйся, это зло, для меня там достаточно было услышать - норм это или нет в рамках моего решения, и что сделать если не норм и как лучше Кто-то же использует и ансейф, потому что в рамках его задачи это нормально

Все в рамках конкретных задач, а не просто дали - используй

Vasiliy
13.10.2018
13:00:29
@Enchantner а вы точно в курсе всех типов задач чтобы делать такие выводы?

Nikolay
13.10.2018
13:01:58
@Enchantner а вы точно в курсе всех типов задач чтобы делать такие выводы?
нет, конечно, но реально, случаев, когда имеет смысл серьезно жертвовать производительностью в целях динамичности, могу представить крайне мало. И для таких случаев обычно другие языки берут, питон, например

unsafe может быть полезен, когда ты копаешь очень низкоуровневую магию и биндинги к системным вещам, но в веб-приложении, например, он нафиг не нужен

Nikolay
13.10.2018
13:03:19
Vasiliy
13.10.2018
13:07:32
код пишут в первую очередь для выполнения функций, если он эти функции выполняет за допустимое время - задача решена. рассуждать о сферической производительности в вакууме без связи с реальностью и тем более делать выводы о знании языка на этом основании - ну это говорит о когнитивном искажении

см эффект Даннинга-Крюгера

Vasiliy
13.10.2018
13:08:33
@Enchantner ты делаешь выводы о знании языка теми кто использовал рефлексию

Nikolay
13.10.2018
13:08:52
@Enchantner ты делаешь выводы о знании языка теми кто использовал рефлексию
ты выбираешь для решения задачи язык со статической типизацией, заточенный под скейл на ядра

и берешь это все нафиг убиваешь рефлектом

ты можешь назвать реальный юзкейс, когда это нужно?

хоть один

Vasiliy
13.10.2018
13:11:30
когда у тебя есть расширяемый документ и возможность работать с сеарилизацией любого пользовательского представления вполне решается рефлексией без усложнения кода и огромным запасом по производительности

а ты предлагаешь усложнить и код и понимание кода только в пользу перфоманса

Google
Vasiliy
13.10.2018
13:12:28
перфоманс - это не цель

цель - функция

Vasiliy
13.10.2018
13:13:16
опять узко думаешь )

Nikolay
13.10.2018
13:13:34
опять узко думаешь )
я специально попросил тебя привести узкий пример ?

Vasiliy
13.10.2018
13:13:42
я выше написал

Nikolay
13.10.2018
13:14:22
если ты выбираешь го для задачи - то ты уже делаешь выбор в пользу производительности и статических типов

использование рефлекта - это офигеть какое исключение

Vasiliy
13.10.2018
13:14:50
интерфейс там не годится так как структуру нужным образом надо сериализовать, то есть поля прочесть, требовать имплементацию от каждой структуры - это слишком дорого для бизнеса

структур сотни

Vadim
13.10.2018
13:15:34
Когда кто вообще использует инит и глобальные переменные?

Vasiliy
13.10.2018
13:16:56
значит ты просто еще слишком молод )

Nikolay
13.10.2018
13:17:40
значит ты просто еще слишком молод )
значит, ты просто еще не научился инструмент по задаче выбирать ?

и да

Vasiliy
13.10.2018
13:18:33
может это комплимент был )

Nikolay
13.10.2018
13:19:04
ну, выглядит, скорее, как выпендреж неуместный ?

если честно

приведи пример лучше, который идею иллюстрирует

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