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

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

Pavel
13.10.2018
11:27:22

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

Google

Alexander
13.10.2018
11:28:07

Nikolay
13.10.2018
11:28:45

Pavel
13.10.2018
11:28:52

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

Pavel
13.10.2018
11:32:03

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

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

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

Daniel
13.10.2018
11:39:24

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

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

Daniel
13.10.2018
11:43:43

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

Zver
13.10.2018
11:44:46

Vasiliy
13.10.2018
11:44:50
да

Pavel
13.10.2018
11:45:04

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

Google

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

Nikolay
13.10.2018
12:58:02

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

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

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

Artem
13.10.2018
13:03:00

Nikolay
13.10.2018
13:03:19

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

Vadim
13.10.2018
13:07:51

Nikolay
13.10.2018
13:08:00

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

Nikolay
13.10.2018
13:08:52
и берешь это все нафиг убиваешь рефлектом
ты можешь назвать реальный юзкейс, когда это нужно?
хоть один

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

Google

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

Nikolay
13.10.2018
13:12:55

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
Когда кто вообще использует инит и глобальные переменные?

Nikolay
13.10.2018
13:15:56
если у тебя API принимает произвольную структуру - то ты уже ссзб

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