Artem
потом будешь уже понимать что делаешь, будешь не тупо смотретьъ
Roman
да так и делаю, только запутался уже совсем)
Alexey
Я как-то делал доклад на эту тему, там самая главная мысль – смотрите на метрики и pprof _до_ того, как это стало проблемой. Чем раньше, чем проще ваш код в тот момент – тем лучше. Интуиция появляется гораздо быстрее
Pavel
А где вилка?
Yuri
А где вилка?
да не жди ее. Даже компанию не написали в какую.
Pavel
А почему не удалили ещё? 😅
Artem
крупнейшая e-com
Artem
все ок
Yuri
все ок
ага в каждом втором подобном посте крупнейшие :)
🏁Александр
🏁Александр
🏁Александр
намек что компания играет в "шпионов" 🙂
Daniel
да это hr играет
🏁Александр
я вангую на то есть причины, может слишкомнаслуху
Daniel
в барби
qurabay
НАтинг
Yuri
да это hr играет
у них сегодня праздник %) шампусика накатили вот и понеслось :)
Aleksandr
заводить несколько папок cmd ?
завести несколько точек входа в cmd - app.go, main.go, server.go
Daniel
а?!
🏁Александр
да
особенно забавно когда у тебя несколько бинарников и в них коброй несколько комманд
Daniel
я так и не понял, зачем нужна кобра
🏁Александр
cmd/binname1/cmd/root.go cmd/binname2/cmd/root.go
🏁Александр
cmd/binname1/cmd/root.go cmd/binname2/cmd/root.go
что бы самому не писать обработчики субкоманд и парсинг параметров
🏁Александр
стандартный не всегда справляется
🏁Александр
аля: parser run --param=value parser version parser help
🏁Александр
Igor
Коллеги, подскажите, как правильно организовать структуру пакета. У меня есть пакет helpers, в котором должна быть функция random выдающая рандомное число. Где для этой цели должен быть расположен rand.Seed() ? в теле самой функции странно смотрится - постоянно сид дёргать. А если в теле того пакета, куда я импортирую helpers, то теряется смысл выносного пакета, если к нему руками надо что-то приписывать ещё.
Aleksander baltazor
Приветствую. Кто то сталкивался с деградацией производительности в golang 1.11? Сравниваю профили 1.9 и 1.11 и получается такая картина: golang 1.9 timer Now 0.18s of 0.73s golang 1.11 timer Now 9.65s of 9.85s
🏁Александр
если вы сид не будете дергать то рандом будет псведо
Darwin
он и так псевдо)
🏁Александр
но если ок то можете в init() вынести
🏁Александр
она автоматом вызовется при подключении пакета 1 раз
Aleksander baltazor
так же runtime findrunnable просел раза в полтора по производительности
Daniel
ответил выше 🙂
я умею в кобру, я просто не сталкивался никогда с проблемой, которую она решает
🏁Александр
🏁Александр
то вполне ок
Aleksander baltazor
интересно. у меня все только быстрее стало с 1.11
ну это первая версия го которая дала такую деградацию у нас
Daniel
ну если вы пишите типо "консольную утилиту"
да, но есть ощущение, что кобра не решает существующую проблему, а реализует некий паттерн. отказываешься от паттерна - и кобра сразу не нужна.
🏁Александр
ну такой паттер часто встречается
🏁Александр
если вы попробуете написать аналог make 🙂
Daniel
ну это первая версия го которая дала такую деградацию у нас
а что профайлер говорит, где изменилось? на порядок, все же....
Daniel
если вы попробуете написать аналог make 🙂
тогда сдайте меня в дурку, пожалуйста
L
ну такой паттер часто встречается
какой паттерн можно еще раз?)
Aleksander baltazor
а что профайлер говорит, где изменилось? на порядок, все же....
как я и говорю профайлер показывает деградацию не кого вызова time now
Заур
Ребзя, привет! Как лучше в голанг проверять равенство двух БОЛЬШИХ текстов?
Igor
но если ок то можете в init() вынести
но если в helpers пакете куча других функций, и другие пакеты не использую функцию random, то у них будет вызываться seed
Aleksander baltazor
я так подозреваю что да, но вообще в самом начале то же деградация, в блоке: runtime timerproc
🏁Александр
какой паттерн можно еще раз?)
когда надо написать ветвистую консольную утилиту "все-в-одном"
Aleksander baltazor
было: 0.16s of 8.19s стало: 2.13s of 27.10s
L
когда надо написать ветвистую консольную утилиту "все-в-одном"
а чем не подходят параметры стандартные для этого? -param1=1 -param2=2
🏁Александр
а чем не подходят параметры стандартные для этого? -param1=1 -param2=2
они могут для каждой из субкоманд быть свои
🏁Александр
например у вас есть парсер
🏁Александр
parse google --googleParams=value parse yandex --yandexParams=value
Daniel
было: 0.16s of 8.19s стало: 2.13s of 27.10s
это на тесте, или на живом проекте?
Aleksander baltazor
Daniel
а кодовая база менялась? а это на сколко вызовов?
Aleksander baltazor
кодовая база, сервер все осталось в неизменном состоянии
Aleksander baltazor
изменилась только версий ГО
L
они могут для каждой из субкоманд быть свои
это получаются оразные программы/команды же не?
🏁Александр
получается
🏁Александр
но что бы кодовую базу особо не разносить
🏁Александр
и бинарников не 100500 штук делать
Daniel
но кобра позволяет разные, фактически, утилиты собрать в один бинарник
🏁Александр
унопенисуально
у нас время компиляции до 5 минут
Aleksander baltazor
кол-во операций не подскажу, но могу сказать что время работы профайлера было выставлено в 30сек
🏁Александр
если бы было несколько бинарников - жесть
🏁Александр
в смысле?
🏁Александр
это все из за гитхаба, он тормозит когда через dep на сборочном подтягиваются
Aleksander baltazor
у пакета time только одно: Parsing of timezones denoted by sign and offset is now supported. In previous versions, numeric timezone names (such as +03) were not considered valid, and only three-letter abbreviations (such as MST) were accepted when expecting a timezone name.