Vladimir
И в общем в начале никто не думал что базы будут на нем делать
Vladimir
Отсюда и проблемы с гц на которые наступает любая жирная база на гошке
Vladimir
В докладе в том числе упоминалось про то что гц в го родом из 70ых :)
Vladimir
И что generational что request oriented был бы лучше
Vladimir
Je
тогда это выглядит как будто ты говорил, го для скриптов и glue api как из пушки по воробьям
Vladimir
Vladimir
Я где то читал, где не помню
Vladimir
Можешь поискать сам если хочешь
Roman
Vladimir
Vladimir
Или страдать и пытаться ещё как то снизить gc pressure
Vladimir
Или плюнуть и вынести часть кода в сервис на rust/c++
Alexander μήδομαι [в отпуске]
точнее не разделять память между функциями
Вот это похоже на Go-way. Спрятать по максимуму памяти внутри горутин и обмениваться транзакциями через каналы. Но будет ли это эффективно?
Roman
Daniel
Vladimir
Vladimir
Плюс канал по скорости чуть медленее чем слайс за мьютексом
Мерль
Vladimir
А?!
а что не так? Канал это буфер, mutex, списки sender'ов и ресиверов и энное колличество магии. См runtime/chan.go
Vladimir
если очень упрощенно
Vladimir
соответственно активно их используя ты огребешь lock contention и вот все что с ним прилагается и на нагрузке разницы особой не будет по скорости (даже каналы окажутся чуть медленее если 1 к 1)
Мерль
Мерль
Я к этому
Vladimir
Vladimir
Я бы тоже
Vladimir
Просто полезно понимать что они не lock free и не магия
Vladimir
Roman
A type marked as go:notinheap may not live in the heap, and does not require a write barrier.
Vladimir
Any type that contains a go:notinheap type is itself go:notinheap. Structs and arrays are go:notinheap if their elements are. Maps and channels of go:notinheap types are disallowed. To keep things explicit, any type declaration where the type is implicitly go:notinheap must be explicitly marked go:notinheap as well.
Roman
делай с uintptr :)
Randi ❤️
Что странно, я зашел сюда по рекламе. Хотя я не пишу на го.
Randi ❤️
.
Как лучше всего передать мапу в функцию: по указателю или нет? В функции только чтение с мапы
Roman
Roman
внимание, github! как правильно оформлять PR в исходный проект, если поменял пути импорта на свои, а в PR это вставлять не хочешь? кто какие трюки git знает? на гитхабе нет выборочного PR, а майнтейнеру хочется облегчить работу. но делать ветку с исправленными путями тоже кажется криво.
Daniel
надо по оригинальному пути к себе грузить из своей репы
Daniel
и не менять пути импорта
Roman
это как?
Roman
я ж свой реп клонирую, у него свой путь
Daniel
git clone репа куда
Roman
это путаница может быть. особенно если потом гогетом или депом тащить
Roman
вобщем я так понимаю кроме как создать отдельную ветку и там вернуть пути - особо надежных вариантов и нет?
Daniel
депу придется прояснить, он умеет
Daniel
гогет пользуется уже имеющимся, если оно есть
Roman
мне кажется это кривовато
Daniel
это самое прямое, что может быть
Roman
подмена репы получается
Roman
а если потом забуду и в другой проект гогетом затащу?
Daniel
до того, как будет пуореквест принят?
Roman
да
Roman
он может быть и не принят, а мне надо
Daniel
так если он быстро не принят - все одно надо форкать и самому развивать
Roman
ну ок, значит через отдельную ветку pr делать
Daniel
а тестить как?
Daniel
или без тестирования засылать?
Daniel
очень умно...
Aleksey
Всем привет! Ищу помощи от знающих людей. Есть консольное приложение которое принимает числа от пользователя. Как сделать так чтобы если пользователь не вводит число на протяжении 10 секунд программа выдавала рандомное число в консоль и запрашивала следующее? Go начал изучать этой ночью, многого пока не понимаю. Гугл и просмотр форумов ответа не дали
Vadim
Vadim
То есть у тебя и scan будет слать число в канал, и горутина с таймером. То число, которое будет прислано первым и пойдёт дальше)
Fedor
kås
Denys
Просто животрепещущий вопрос, вот многие и интересуются
Vadim
Пы. Сы. Не тестил, так как на телефоне.
Vadim
//go 1.6
package main
import "fmt"
import "time"
import "math/rand"
var ch chan int32
func main() {
ch = make(chan int32)
go input()
go timer()
number := <- ch
print(number)
}
func input(){
var i int32
fmt.Scan(&i)
ch <- i
}
func timer(){
timer := time.NewTimer(time.Second*10)
<- timer.C
ch <- rand.Int31()
}
kås
Ощущение что его обсуждают всю неделю. Видимо очень насущный вопрос
kås
Или домашку где-то такую задали
Denys
Или домашку где-то такую задали
Это тестовое задание на стажировку. При чем самое интересное то, что в требованиях к стажерам было написано: "желание программировать на go", а не знание языка go
Nikolay
Denys
Об этом можно было сразу написать, заодно и количество желающих уменьшилось бы
Stanislav
Denys
Denys
Vladimir