Roman
хотя чёт я брежу, это ж шрифт
Roman
хотя вместо отдельного шрифта можно бы было и просто плагином одно сочитание символов на другой UTF8 символ заменять для презентации, но такого не могу найти ибо такие операторы как := можно бы было упростить до 1 символа
Roman
у этого шрифта больше всего лигатур реализовано
в любом случае работает норм, спасибо
Anonymous
Вы тестировали? Я думал компилятор понимает такие вещи.
он действительно понимает for i:=......... { a:=.... } что переменная а будет инициализирована при каждой итерации и убита гарбадж коллектором в конце в соответствии с синтаксисом языка! Или тестировать соответствует ли GO своему синтаксису?
Anonymous
в конце каждой итерации ГЦ?
нет .... процесс убийства растянут по жизн приложения стандартная очередь
Anonymous
главная оптимизация обьявить переменную ДО цикла
.
https://play.golang.org/p/uzpYXDzO1il
.
Можно вернуть nil
.
nil подходит под любой интерфейс
Anonymous
Эта переменная может быть вообще не обработана gc, если будет размещена на стеке, а не в куче
думаете что 1 лям итераций создадут 1 лям интов на стеке? Оптимистчно однако😂
V
Я не думаю, я обычно проверяю
V
Но если это инт внутри цикла, то будет скорее всего переиспользована пямять
Anonymous
Но если это инт внутри цикла, то будет скорее всего переиспользована пямять
переиспользована? То есть принудительный вызов ГК?
V
Benchmem и pprof в помощь
Pavel
Зависит от того что с этой переменной делают, да она может быть в стеке один раз и туда будет записываться новое значение каждую итерацию.
V
^это вот
V
Компилятор в большинстве случаев гораздо умнее программиста
Anonymous
Да а потом появляются статьи о повторном использовании переменых! Везет вам у вас все компилятор делает!
V
Вы предполагаете поведение не зная как отработает компилятор на самом деле, что плохо. Так ещё и другим рассказываете свои предположения.
Pavel
Ага и пример прям не полный я б сказал.
Pavel
Сильно зависит от того что в цикле и вы воду пытаетесь обсуждать.
Anonymous
Вы предполагаете поведение не зная как отработает компилятор на самом деле, что плохо. Так ещё и другим рассказываете свои предположения.
я не рассказываю предположения , я рассказываю о практическом опыте как ускорял свои рекурсивы на aigames.com своей прграмки GoKaidzu! Можете не читать я не стараюсь просвещать кого либо !
V
Ускоряли без профилирования видимо?
Anonymous
ну там все просто уложись в секунду .... а уж с профилированием или нет ( я писал свой бенч) не важно
V
Т.е. вы по своему частному случаю сделали обобщение 👍
Anonymous
теорию затачивает практика!
V
Конкретно в этом случае ваше обобщение неверно.
Anonymous
Конкретно в этом случае ваше обобщение неверно.
решили выступить истиной в последней инстанции? Да на здоровье😂, думаю далее только холивар!
V
Вступил в обсуждение, где вы говорили неверные вещи. Можете не читать.
Anonymous
Сильно зависит от того что в цикле и вы воду пытаетесь обсуждать.
скоре общий стиль , чтоб потом увидев кашмар в pprof не испралять именно эти алокации!! Да на простеших задачах без рекурсий вроде компилятор справляется, но когда програмеры молотят по 400кило в месяц , хотелось бы чтоб молотьба была наиболее успешной , а обьяснять почему компилятор не положил на стек переменную которая уйдет в рекурсию параметром я уже устал
🏁Александр
шото мало
🏁Александр
это меньше запроса раз в три секунды
Anonymous
строк наверное
🏁Александр
да и строк... копейки
V
А потом вы этот код из цикла захотите вынести в функцию и начнёте передавать туда эту переменную...
V
Хорошее правило наоборот максимально сужать область видимости переменной
arkady
Ребята, подскажите пожалуйста, при работе с gorm, как правильно делать, если мне на клиентский запрос нужно отдать инфу из базы, мне для каждого пользователя открывать коннект, доставать данные и закрывать его или какие-то другие еще есть варианты?
Anonymous
со sqlite такое не прокатит
arkady
со sqlite такое не прокатит
я понимаю, из доки скопировал
arkady
типо для постгреса создастся пул?
Anonymous
да, вот этот db создаётся один раз на всё время жизни программы. внутряках либы обычно уже реализован пул соединений
arkady
понял, спасибо
Artem
понял, спасибо
в main один раз делаешь db, err := gorm.Open(), потом везде таскаешь этот db и обращаешься к нему. ни локов, мютексов и другой фигни не нужно, он справится
Kirill
_ = abc
Kirill
Да
Kirill
@alek_si 🤘🏿 за такую работу с лицензиями в gosh
Kirill
кто не видел — https://github.com/gosh-lang/gosh
Roman
кто не видел — https://github.com/gosh-lang/gosh
an interpreted language written in Go… hmm, okay, but why?!
Kirill
почему бы и да?
Roman
почему бы и да?
потому-что Go не systems programming язык (IMHO), зачем писать интерпретатор на Go 🤔
Kirill
я не планировал сегодня тебя тыкать в доку языка xD
Roman
ну — твоё IMHO, ты и не пиши :p
моё имхо обосновано) но я не понимаю смысл проекта) он серьёзный? или это просто ради фана?
Kirill
ты забываешь, что всегда есть rm -rf $GOROOT/src/runtime
Kirill
так что многие обоснования идут в /dev/null %)
Roman
рантайм то одно, но вот компилятор - другое) по оптимизации Go (AFAIK) не самый подходящий)
Kirill
ты не на то упираешь, Рома
Kirill
смотри
Roman
„Gosh is an interpreted language for Go ecosystem written in Go.“ он нацелен решить какие-то конкретные проблемы в экосистеме?
Kirill
то, что нельзя отрицать
Kirill
в Go херовая модель памяти
Kirill
в гошке есть горутины, а модель памяти неоптимальная для этого
Roman
в гошке есть горутины, а модель памяти неоптимальная для этого
хмм, модель памяти (namely: GC) вполне оптимальна для Go как AP языка (application programming lang), а вот модель типизации храмает
Roman
но если смотреть с точки зрения SP тогда конечно да, модель памяти совершенно не подходящая
Kirill
модель памяти в контексте модели доступа к памяти — говно
Kirill
а что не ясно?
Roman
ты имеешь ввиду runtime memory pool? менеджмент памяти runtime’ом?
Kirill
я имею ввиду ВСЁ в контексте модели доступа к памяти
Kirill
куда не плюнь, сплошное говно
Roman
ну.. хорошо) AP задачи он решает относительно хорошо, для SP он не был задуман (Пайк сам в этом признался что изначальный уклон на systems programming был неверным)