Vladislav
Привет всем. Слушайте, а вы не знаете. Есть ли какой-нибудь образцовый проект (на GitHub'е, например). Где приведен пример какого-нибудь REST-сервера. Ну чтобы по паттернам все как положено)
Emil
это и не го, но репо крутой
Vladislav
Спасибо) но интересует golang конкретно
Vladislav
Так как в Go тот же Gin не диктует никаких паттернов)
Vladislav
А примеры микросервисных проектов есть на Go?
Michael
Vladimir
смотри, буфер весит 2048 байт, а данных в нем на 128, например.
ну у тебя ж какие-то метаданные тоже есть?
Roman
ну у тебя ж какие-то метаданные тоже есть?
угу. у меня есть инфа сколько байт реально
Vladimir
угу. у меня есть инфа сколько байт реально
а в чем проблема экспортировать это в Го?
Roman
а в чем проблема экспортировать это в Го?
нет проблемы ) короче, посмотрел - все и так хорошо
Roman
BenchmarkPtr-4 2000000000 0.35 ns/op 5769.21 MB/s 0 B/op 0 allocs/op
Roman
https://dpaste.de/GQx9
Roman
почему второй вариант медленнее? )
🏁Александр
"unsafe" "reflect"
🏁Александр
Kirill
unsafe не даёт оверхед
🏁Александр
я вообще с трудом улавливаю смысл манипуляшек
Kirill
а зря
Kirill
пора бы разобраться, раз с гошкой работаешь
🏁Александр
не в том смысле, я думаю что за задачу ставил автор написав такое O_o
Vladimir
не в том смысле, я думаю что за задачу ставил автор написав такое O_o
у автора библиотека на Сях, которая делает сишные структуры. А он их через unsafe + reflect конвертирует в Гошные
🏁Александр
это проясняет шаманские песнопения
🏁Александр
но там же вроде есть как бы С библиотека для этого
🏁Александр
или я ошибаюсь?
Kirill
ты netmap хочешь перепиливать?
Vladimir
но там же вроде есть как бы С библиотека для этого
ну так результат из сишной библиотеки чувак хочет юзать в Гошном коде
Vladimir
притом желательно в относительно нативном виде
🏁Александр
мы говорим про кросскомпиляцию когда?
Kirill
мы говорим о работе с памятью
Roman
только reflect
reflect там только ради слайса. по факту там никакой рефлексии нет
Kirill
там линковщик уже начинает играться
Roman
есть же
я с таким же успехом мог задекларировать свою структуру с таким же набором полей
Kirill
хотя я не помню, как именно в 1.9.x
Kirill
возможно и пофиксили, особо спорить не буду
Roman
ну так результат из сишной библиотеки чувак хочет юзать в Гошном коде
там все хуже: вообще все предоставляет ядро. я делаю mmap и ко мне все это приезжает в процесс.
Kirill
%)
Vladimir
там все хуже: вообще все предоставляет ядро. я делаю mmap и ко мне все это приезжает в процесс.
Но это не так принципиально. У тебя все равно с точки зрения го есть память, заполнябщаяся извне
Vladimir
А тебе хочется нативных структур
Roman
короче, пока оно у меня уперлось в 24 млн пакетов в секунду и проблема тут уже далеко не на стороне go
Roman
так ты профайлинг провёл?
завтра. я на ноуте тот кусок что мне интересно выдрал. завтра посмотрю на вообще все приложение
Roman
а вот https://github.com/google/gopacket писали инвалиды =(
Kirill
внезапно
Kirill
обычные биндинги же
Roman
внезапно
угу. там куча аллокаций в совершенно ненужных вещах =(
Kirill
а. так это во всём языке так
Roman
а. так это во всём языке так
Грустно, если это действительно так
Kirill
угадай, где стандартная либа?
Roman
Мартини?
Kirill
везде
Kirill
кроме gramework
Kirill
он основан на fasthttp
Kirill
который тоже там есть, как и пара роутеров для него
Roman
Выглядит похоже
Anonymous
Err = надо, без двоеточия. Т.к. err был объявлен в предыдущей строке.
Viktor
err уже обявлен
Viktor
выше
Viktor
так что вместо := нужен =
Anonymous
ок, спасибо
Anonymous
Эээ, куда всё удалил ))
Anonymous
в го можно принудительно вызвать сборку мусора?
Michael
в го можно принудительно вызвать сборку мусора?
специально по-хайзенбергски: https://golang.org/pkg/runtime/debug/#FreeOSMemory
Michael
правда, с менеджментом памяти в некоторых случаях у Гоу не так всё хорошо, в 1.10 или 1.11 версиях должны появиться фиксы, решающие некторые проблемы с гц и фрагментацией памяти, приводящие к out of memory
Anonymous
Спасибо
Sebor▂▅▇█▓▒░
А кто каким парсером конфигов пользуется? В стандартной либе ничего не нашел