20:08:40 From denis : ) 20:09:27 From Nikolay Yakubitskiy : Хьюстон, у Вас проблемы?) 20:10:04 From Vyacheslav.Sitnikov : + 20:10:05 From Dmitry Pavlov : + 20:10:06 From Nikolay : + 20:10:07 From Даурен : + 20:10:07 From Eugene Klimov : + 20:10:07 From Mike Deruygin : + 20:10:37 From Vyacheslav.Sitnikov : Главное, чтобы в запись попала новое видео, иначе это будет самый короткий урок :) 20:11:46 From Vyacheslav.Sitnikov : Антон, про профайлеры вопрос - они работают под виндой? 20:12:08 From Grigoriy Zavodov : да 20:13:18 From Mike Deruygin : + 20:13:19 From Dmitry Pavlov : + 20:13:21 From denis : + 20:14:54 From denis : А что значит точка? 20:15:04 From Vyacheslav.Sitnikov : любой знак 20:15:23 From Даурен : Текущяя директория наверное 20:15:35 From denis : То что это регэкп понятно, на что она ложится 20:15:51 From denis : То есть на название метода бенча? 20:15:56 From denis : ок 20:18:11 From Dmitry Pavlov : - 20:18:12 From Mike Deruygin : - 20:18:14 From Sergey Olisov : - 20:18:16 From Даурен : а как же аллокация вне цикла? 20:18:18 From Nikolay : - 20:18:18 From denis : + 20:18:42 From Vyacheslav.Sitnikov : А я могу узнать, во время работы моей программы, на какой кусок кода больше всего жрёт ресурсов/времени/памяти? Или это только для тестов? 20:18:45 From denis : B/op - это аллокации в куче? В стекке не учитывается? 20:22:44 From Nikolay : - 20:22:45 From Mike Deruygin : - 20:22:50 From Dmitry Pavlov : - 20:23:47 From Grigoriy Zavodov : в map append 20:23:50 From Даурен : Make? 20:24:12 From Dmitry Pavlov : а ну да 20:25:40 From Даурен : 2x 20:25:44 From Vyacheslav.Sitnikov : в два раза 20:25:47 From Mike Deruygin : сначала 2, потом меньше 20:25:48 From Nikolay : 2/3 +1 ? 20:25:50 From Vyacheslav.Sitnikov : до какого-то предела 20:27:32 From Vyacheslav.Sitnikov : А если не использовать указатель? 20:27:38 From denis : Не понял почему внутри плохо? 20:27:39 From Vyacheslav.Sitnikov : будет разница? 20:28:00 From Dmitry Pavlov : он медленее не станет? 20:28:33 From Даурен : C reset- ом тоже самое же 20:30:14 From Dmitry Pavlov : а с reset-м запускать не будем? 20:31:20 From Mike Deruygin : + 20:31:21 From Dmitry Pavlov : + 20:31:22 From Vyacheslav.Sitnikov : + 20:31:25 From denis : + 20:33:47 From Vyacheslav.Sitnikov : Ну регулярки явно не для поиска подстроки в строке создавались :) 20:34:21 From Vyacheslav.Sitnikov : А можно тест 20:34:24 From Vyacheslav.Sitnikov : бенч? 20:34:56 From Vyacheslav.Sitnikov : поиск по строке, поиск по строке с компилируемой регуляркой и поиск по строке с заранее скомпилированной регуляркой 20:35:33 From Vyacheslav.Sitnikov : да 20:36:25 From Dmitry Pavlov : компилятор оптимизиуерт? 20:36:28 From Nikolay : оптимизировано внутри Go) 20:36:30 From Vyacheslav.Sitnikov : память один раз выделится + это константы 20:36:36 From denis : А если там динамическая переменная 20:36:49 From Dmitry Pavlov : наверное уже нет 20:37:54 From Vyacheslav.Sitnikov : а билдер только складывать умеет? 20:38:04 From Vyacheslav.Sitnikov : *конкатенировать 20:41:00 From Mike Deruygin : полезный пример 20:42:47 From Mike Deruygin : - 20:42:47 From Dmitry Pavlov : запустим? 20:42:48 From Nikolay : нет, все понятно 20:42:51 From Sergey Olisov : - 20:42:53 From Даурен : Походу редко используется 20:42:59 From Nikolay : да интересна раница по времени тут 20:43:11 From Nikolay : Точно не редко 20:43:31 From denis : Для разных горутин будет один и тот же объект? 20:45:17 From denis : res же создается - из-за этого и новый 20:45:34 From Dmitry Pavlov : возможно 20:45:34 From denis : да 20:46:48 From Vyacheslav.Sitnikov : а что считается лучшей практикой - именовать параметры функции или нет? 20:47:02 From Vyacheslav.Sitnikov : для выхода 20:47:37 From Dmitry Pavlov : bulder.String() уже создает алокацию 20:47:56 From Dmitry Pavlov : Не делать String(), return "" 20:49:27 From Nikolay : в больших методах не надо именовать 20:49:40 From Dmitry Pavlov : Когда из defer-а нужно вернуть ошибку 20:49:46 From Dmitry Pavlov : Close() 20:50:08 From Eugene Klimov : там у билдера есть еще Grow - преаллокатор 20:51:25 From Vyacheslav.Sitnikov : + 20:51:27 From Sergey Olisov : + 20:52:57 From OTUS Онлайн-образование : gc took: 185.871469ms gc took: 183.848202ms gc took: 238.993519ms gc took: 234.488443ms gc took: 213.74159ms gc took: 232.089036ms gc took: 248.143183ms gc took: 226.552513ms gc took: 202.357973ms gc took: 195.452852ms 20:53:21 From OTUS Онлайн-образование : gc took: 3.611651ms gc took: 1.918129ms gc took: 1.864536ms gc took: 1.972676ms gc took: 2.134114ms 20:53:45 From Mike Deruygin : сделать 1 словарик 20:53:50 From Vyacheslav.Sitnikov : хеш высчитать 20:53:54 From Dmitry Pavlov : не будет ли быстрее []byte? 20:53:54 From Nikolay : хэш брать? 20:54:21 From denis : Да и хеш надо вычеслять 20:54:47 From Dmitry Pavlov : Если его можно как ключ) 20:54:51 From Dmitry Pavlov : не уверен 20:55:06 From Vyacheslav.Sitnikov : ненене, ключ 20:55:12 From Dmitry Pavlov : не, я имел ввиду ключ 20:55:33 From OTUS Онлайн-образование : []byte as value 20:55:34 From OTUS Онлайн-образование : gc took: 71.735581ms gc took: 75.835541ms gc took: 87.982959ms gc took: 122.630962ms gc took: 68.136979ms gc took: 80.895876ms gc took: 170.404716ms gc took: 89.868182ms gc took: 111.031667ms 20:55:34 From Vyacheslav.Sitnikov : так это тоже инт 20:56:06 From Dmitry Pavlov : он мутабельный 20:56:32 From Vyacheslav.Sitnikov : Я думал, что мы про ключи говорим, там разница есть 20:56:39 From Vyacheslav.Sitnikov : а для значения разницы не должно быть 20:57:04 From Vyacheslav.Sitnikov : Ну должно быть, но не так существенно 20:57:14 From Dmitry Pavlov : так почему в итоге медленнее, из-за того, что для строк есть указатели, а для int-в нет доп указателя? 20:57:53 From Dmitry Pavlov : а, ок, понял 20:57:57 From Даурен : а что вообще делает GC в этой программе? 20:58:41 From Nikolay : в Go прямой вызов GC плохая практика? 20:59:02 From Даурен : Имею ввиду что он собирает, ведь мы ничего не освободили? 21:00:40 From Nikolay : спасибо 21:00:53 From Даурен : ну ведь foo остался 21:00:57 From Vyacheslav.Sitnikov : не освободили, а проверять то что есть всё равно нужно 21:00:58 From Dmitry Pavlov : анализирует только 21:01:30 From denis : foo глобальная - он ее точно не удалит 21:02:05 From Nikolay : + 21:02:05 From Dmitry Pavlov : + 21:02:06 From denis : + 21:02:06 From Vyacheslav.Sitnikov : + 21:02:08 From Mike Deruygin : + 21:02:34 From Vyacheslav.Sitnikov : Двайте к профайлерам, и так понятно, что всё что угодно быстрее рефлексии :) 21:03:16 From Dmitry Pavlov : Ну парсеры и т.д. это понятно) 21:04:11 From Vyacheslav.Sitnikov : а если несколько горутин будут его юзать? Хаос начнётся? 21:05:04 From Даурен : он ложится? 21:05:10 From Даурен : Лечится? 21:05:16 From Даурен : лочится? 21:05:53 From denis : Скорее есть какое id соединения 21:06:07 From Vyacheslav.Sitnikov : 1000 обезьян 21:06:11 From Vyacheslav.Sitnikov : =) 21:06:13 From iPhone SAP : locust 21:06:16 From Dmitry Pavlov : Что-то слышал про танк от Яндекса 21:06:16 From Nikolay Yakubitskiy : ab 21:06:17 From Даурен : индусы 21:06:58 From OTUS Онлайн-образование : apache benchmark 21:07:00 From OTUS Онлайн-образование : JMeter 21:07:03 From OTUS Онлайн-образование : wrk 21:07:53 From Vyacheslav.Sitnikov : а чем бомбить? 21:08:11 From Vyacheslav.Sitnikov : То есть бессмысленная нагрузка? 21:09:35 From Mike Deruygin : а я могу использовать его наоборот? скажем, апи отдает 429 при определенных нагрузках, а я хочу получить значения этих нагрузок? 21:12:44 From Vyacheslav.Sitnikov : В fasthttp, похоже, фиксиков напрягают 21:13:21 From Mike Deruygin : спасибо 21:16:41 From Vyacheslav.Sitnikov : а с реальной программой, не тестовой? Скажеб бесконечный цикл, который вызывает подряд Fast и Slow как узнать? 21:16:44 From Mike Deruygin : + 21:16:57 From Nikolay : + 21:17:01 From Dmitry Pavlov : + 21:18:45 From denis : - 21:18:47 From Sergey Olisov : - 21:18:47 From Dmitry Pavlov : нет 21:18:49 From Mike Deruygin : 7 g это виртуальная? 21:19:48 From Mike Deruygin : то есть то, что она хочет, но не то, что ей дадут? 21:20:13 From Mike Deruygin : она может запросить 7 гигов, но не обязательно их получит 21:20:38 From Vyacheslav.Sitnikov : Вот что теперь в минимальных требованиях к проге указывать? 7 гигов? 21:20:58 From Mike Deruygin : а, я понял, спасибо 21:21:00 From Dmitry Pavlov : бенчмар гонят N раз функцию, а потом суммирует 21:22:41 From Vyacheslav.Sitnikov : localhost 21:25:44 From Dmitry Pavlov : + 21:25:45 From Vyacheslav.Sitnikov : оооооо 21:25:45 From Nikolay : + 21:25:47 From Sergey Olisov : + 21:26:27 From Vyacheslav.Sitnikov : круто, линии кривые, как будто кто-то руками рисовал :) 21:26:44 From Даурен : мы 10сек команду запустили после окончания wrk? 21:27:17 From Mike Deruygin : красивое деревце 21:27:25 From Даурен : понял спасибо 21:27:44 From Vyacheslav.Sitnikov : там же 50 потоков было 21:27:55 From denis : А если это не http сервис, как снимать профайл? 21:27:59 From Vyacheslav.Sitnikov : ну явно не три :) 21:28:32 From Vyacheslav.Sitnikov : дада, давайте первый пример 21:29:28 From Vyacheslav.Sitnikov : а нет какого-нибудь общего профайла? 21:29:53 From denis : 08 21:30:44 From denis : Можно ли снять профиль работающей прграмме? 21:30:49 From Vyacheslav.Sitnikov : так давайте бесконечный цикл по первому примеру 21:32:21 From denis : да 21:32:21 From Nikolay : + 21:32:22 From Dmitry Pavlov : + 21:32:22 From Sergey Olisov : + 21:34:39 From denis : Можно ли снять профиль работающей прграмме? 21:35:00 From denis : ок 21:35:03 From Vyacheslav.Sitnikov : пример можно? 21:35:18 From Даурен : А c HTTP сервером можно svg сделать? 21:35:26 From Vyacheslav.Sitnikov : погодите 21:35:41 From Даурен : а точно 21:35:53 From Vyacheslav.Sitnikov : Давайте из первого примера Fast и Slow в бесконечном цикле pprof снимем 21:36:26 From Vyacheslav.Sitnikov : ну прервать после некоторого времени 21:36:37 From Vyacheslav.Sitnikov : ок 21:39:02 From Vyacheslav.Sitnikov : а для чего он вообще нужен? Всё равно непонять, что там имеется в виду под, утрирую, четвёртой полоской слева шириной в один пиксель. 21:39:35 From Vyacheslav.Sitnikov : а, он интерактивный... 21:39:39 From Sergey Olisov : прикольно 21:42:27 From Даурен : _ 21:44:04 From Mike Deruygin : о, это удобно, спасибо 21:44:08 From Dmitry Pavlov : огонь 21:44:12 From Nikolay : это круто 21:46:32 From Dmitry Pavlov : + 21:46:32 From Mike Deruygin : + 21:46:33 From Sergey Olisov : + 21:46:33 From denis : + 21:47:31 From denis : Трейсы можно снимать только с http серверов? С обычных программ нет? 21:48:34 From denis : ок 21:49:15 From Mike Deruygin : имеет 21:49:17 From Vyacheslav.Sitnikov : я не тороплюсь :) 21:49:19 From Sergey Olisov : + 21:49:22 From Ivan Ivanov : + 21:49:30 From Nikolay : + 21:49:30 From Dmitry Pavlov : + 21:49:31 From denis : + 21:49:31 From Mike Deruygin : + 21:49:32 From Даурен : + 21:49:32 From Vyacheslav.Sitnikov : + 21:49:32 From Nikolay : чуть в сторону вопрос - есть ли в Go в рантайме встроенные пулы "примитивных" типов или строк, например в Java есть пул [-128 ; 127] и при присвоение числа переменной память не алоцируется (без оператора new конечно) 21:49:55 From Vyacheslav.Sitnikov : Кто не плюс - тот в записи посмотрит 21:50:56 From Nikolay : спасибо 21:51:12 From Mike Deruygin : - 21:51:14 From Даурен : - 21:51:16 From denis : Анализ ссылок GC 21:51:18 From Ivan Ivanov : - 21:52:06 From denis : Разве там не больше 32Кб - тогда в куче? 21:52:52 From OTUS Онлайн-образование : https://segment.com/blog/allocation-efficiency-in-high-performance-go-services/ 21:53:29 From Dmitry Pavlov : + 21:53:29 From denis : + 21:53:29 From Mike Deruygin : + 21:53:30 From Sergey Olisov : + 21:53:31 From Ivan Ivanov : + 21:55:11 From Vyacheslav.Sitnikov : Оффтоп: А Ремня уволили что-ли? Что-то давно не показывался он на уроках 21:55:26 From Dmitry Pavlov : У него свой курс 21:55:52 From Dmitry Pavlov : это его авторский, на сколько я знаю 21:58:34 From Vyacheslav.Sitnikov : А цветовая дифференциация штанов имеет значение? 21:59:00 From Vyacheslav.Sitnikov : это из кин-дза-дза :) 21:59:05 From Sergey Olisov : прямоугольничков 21:59:20 From Vyacheslav.Sitnikov : Там цвет и размер разные в примере 21:59:32 From Vyacheslav.Sitnikov : серый больше по размеру чем красный 21:59:51 From denis : //go:generate easyjson $GOFILE 21:59:57 From denis : В файле 22:00:08 From denis : потом go generate 22:00:11 From Vyacheslav.Sitnikov : 4 уровень 22:00:15 From Dmitry Pavlov : Там у срелочек есть циферки, если что) 22:01:10 From Vyacheslav.Sitnikov : А что значит стрелочка пунктиром? 22:03:29 From denis : не явный вызов?) 22:04:50 From denis : String 22:04:52 From Mike Deruygin : contains 22:04:54 From Vyacheslav.Sitnikov : contains 22:04:55 From Sergey Olisov : + 22:05:21 From Vyacheslav.Sitnikov : В конце может пробел стоять и всё испортить 22:05:26 From Vyacheslav.Sitnikov : с суффиксом 22:05:46 From Dmitry Pavlov : strings.Trim вроде есть 22:07:07 From Dmitry Pavlov : По строчке читать 22:07:08 From Mike Deruygin : на bufer? 22:08:14 From denis : двойной цикл 22:09:32 From Dmitry Pavlov : Не подскажу) 22:10:28 From Dmitry Pavlov : в ошибке будет EOF, если конец файла 22:11:07 From Grigoriy Zavodov : reader := bufio.NewReader(file) s, err := reader.ReadString('\n') if err != nil && err != io.EOF { return "", err } 22:11:09 From Eugene Klimov : var line []byte scanner := bufio.NewScanner(file) for scanner.Scan() { line = scanner.Bytes() 22:13:37 From Mike Deruygin : + 22:13:37 From Vyacheslav.Sitnikov : отделяем мух от котлет (название ящика от доменав) 22:13:38 From denis : Разделяет на две части 22:13:41 From Eugene Klimov : разделяет на слайс два поля 22:13:46 From Dmitry Pavlov : разбивает строку по собачке, но на 2 части 22:13:49 From Grigoriy Zavodov : разбиваем на 2 части 22:13:54 From Nikolay : до первого разделителя 22:15:28 From OTUS Онлайн-образование : BenchmarkMain-8 3 402056188 ns/op 311054216 B/op 2422357 allocs/op 22:15:33 From OTUS Онлайн-образование : BenchmarkMain-8 9 114084622 ns/op 12084545 B/op 611115 allocs/op 22:15:38 From Nikolay : в 4 раза что ли 22:15:54 From Vyacheslav.Sitnikov : давайте лучше сделаем профайл из первого примера про Fast и Slow (03 по-моему) Просто main, где бесконечный цикл, вызывает поочерёдно Fast и Slow. Через несколько секунд программу прерываем и смотрим, что сколько жрёт. Главное, чтобы это не text_main.go файл был 22:17:17 From OTUS Онлайн-образование : https://otus.ru/polls/4907/ 22:17:42 From denis : Спасибо за занятие! 22:18:00 From Mike Deruygin : было супер, спасибо большое! 22:18:07 From Ivan Ivanov : спасибо что задержались) 22:18:17 From Nikolay : Спасибо! 22:18:20 From Dmitry Pavlov : спасибо 22:18:46 From Vyacheslav.Sitnikov : ага, самый простой 22:19:13 From Vyacheslav.Sitnikov : просто main с бесконечным циклом, поочередно вызывающим Slow и Fast 22:20:10 From Vyacheslav.Sitnikov : а если скомпилить её с профайлом? Или так нельзя 22:21:02 From Vyacheslav.Sitnikov : тест же можно бинарь сделать 22:22:20 From Vyacheslav.Sitnikov : Хорошо, в тесте вызываем main 22:22:44 From Vyacheslav.Sitnikov : да 22:22:56 From Vyacheslav.Sitnikov : не совсем 22:23:14 From Vyacheslav.Sitnikov : хотелось бы понять можно ли профилировать реальную программу, а там не факт, что тесты есть 22:23:57 From Vyacheslav.Sitnikov : а если натравить go test -bench на нормальный go файл от основной программы? 22:25:43 From Vyacheslav.Sitnikov : Хочу диаграмму, чтобы было видно, что у меня в программе тормозит, узкое место найти 22:25:50 From Vyacheslav.Sitnikov : но тестов у меня нет 22:26:04 From Vyacheslav.Sitnikov : да 22:26:22 From OTUS Онлайн-образование : top 22:26:24 From OTUS Онлайн-образование : itop 22:26:30 From OTUS Онлайн-образование : perf 22:26:35 From Vyacheslav.Sitnikov : линуксовый pprof 22:26:36 From Vyacheslav.Sitnikov : ? 22:27:02 From Mike Deruygin : хорошего вечера) 22:27:05 From Vyacheslav.Sitnikov : Полно, но уже поздно :) 22:27:12 From Sergey Olisov : спасибо!!! 22:27:14 From Ivan Ivanov : спасибо) увлекательно! 22:27:17 From Vyacheslav.Sitnikov : ок :) 22:27:23 From Nikolay : спасибо за ваше время! 22:27:25 From Vyacheslav.Sitnikov : спасибо