engelbart
Четсно говоря я про этот хеш вообще не понимаю
engelbart
у меня там просто map[string]int
engelbart
я сам хеши никакие не считаю ж
Daniil
Напиши на си/плюсах
Илья
Илья
gc?
engelbart
эти циклы объедитнни я мепов (сотни их) сжирают время
engelbart
293.28s 25.45% 25.45% 293.28s 25.45% runtime.memhash
216.45s 18.79% 44.24% 467.58s 40.58% runtime.mapassign1
186.18s 16.16% 60.40% 187.92s 16.31% runtime.mapiternext
149.46s 12.97% 73.37% 398.52s 34.59% runtime.mapaccess1_faststr
67.65s 5.87% 79.24% 1106.82s 96.06% validator.(*MetricString).Combine
Илья
http://jmoiron.net/blog/go-performance-tales/
Илья
если упирается именно в производительность map, то, и правда, придется переходить на int
Brown
Я думаю это просто выделение памяти
Илья
engelbart
хеш на интах подразумевает же словарик где то ряом, так ведь?
Илья
хмм, да, но по нему бегать так часто не придется
Илья
по идее
engelbart
ну пореже, да.
Daniil
Так а как мапа на го работает кто-нибудь вкурсе?
engelbart
откуда ж
George
https://golang.org/src/runtime/hashmap.go
Ildar
Кстати, интересно. Dropbox начинали свою разработку на Go, потом отказались от него. Почему?
Mike
Например, посмотрели на цены инженеров
Aleksandr
А когда они успели отказаться?
Ildar
Недавно был на докладе, там говорилось, что они от него ушли, или частично отказались.
Aleksandr
А ссылку можно?
Daniil
engelbart
Да, верно, все ж открыто
Slava
dev_sheep
Ребята, вот как правильно сделать:
есть реп на гитхабе, в котором лежит один проект. Но на Java. Сейчас этот же проект я полностью переписал на Go со всеми улучшениями и дополнениями. Эту, так скажем v2.0 запихнуть в тот же реп в другую ветку или в новый реп?
Ivan
dev_sheep
понял, спасибо :)
Илья
dev_sheep
👍😊
Alexei
я тоже за новый реп, реп2 )
dev_sheep
:D
dev_sheep
новая жизнь
dev_sheep
репорт кард оценил в NOT BAD
dev_sheep
осталось комменты проставить и A+ будет :D
dev_sheep
golint постоянно ругает за них, подлец
dukeBarman
Илья
а в проекте написать ABANDONED DEPRECATED PLEASE LEAVE!
dev_sheep
😂
dev_sheep
Прямо капсом
dev_sheep
Спасибо, кстати, за советы :3
Dmitriy 😎
Добрый день. Не подскажите? В golang планируются дженерики в новых версиях?
engelbart
нет
Pauline
что такое дженерики?
Pauline
Шаблоны (templates) в Си++ это частный случай обобщённых типов (generic types). Обобщённые типы в Си++ очень мощные, Тьюринг-полные. Вы, например, можете вычислять числа Фибоначчи во время компиляции с помощью шаблонов Си++.
Pauline
это?
Slava
Дима сразу с козырей зашёл
Мерль
Slava
это всё домыслы, вопрос был планируется ли - ответ, нет, не планируются
Мерль
Увы
Daniil
гошники, помогите плс.
Когда я пишу
func (p *MyType) f() {
return *p
}
происходит копирование же?
Dmitriy 😎
А мы можем сделать свой форк Go с дженериками?
Daniil
еще
у меня есть
type M interface {
Create() (*M, error)
}
я хочу его использовать так
var m M
....
someM := m.Create()
someM.Create() <- compile error (pointer to interface not an interface)
как вообще правильно пистаь такие штуки?
Вся суть метода Create() в том что он может вернуть или указатель на объект от которого его и вызывают (m) или на новый интсанс какого-то типа данных...
ЧЯДНТ?
Понятно чего хочу добиться или как-то иначе расписать?
Dmitriy 😎
@matrixd , ты пытаешься вернуть указатель на интерфейс. Так как M – это интерфейс, то возвращать нужно просто M
Oleg
Dmitriy 😎
Мне понравился rust, но проблема там в том, что поддержка от IDE скудная... а из-за этого любая мелкая программа намного тяжелее пишется
Oleg
Daniil
или я вообще все не так понимаю и это не взлетит даже?
Dmitriy 😎
измени
return *k, nil
на
return k, nil
Daniil
и тогда копирования не будет?
Dmitriy 😎
тогда не произойдет копирования и взлетит
Dmitriy 😎
да
Dmitriy 😎
тебе нужно копирование?
Daniil
а если захочу то делаю
func (k *K) Create() (M, error) {
copy := *k
return &copy, nil
}
и будет копия?
Dmitriy 😎
Да
Daniil
тебе нужно копирование?
я хочу написать так чтобы это было деталью реализации. т.е. тот кто работает с интерфейсом не знает копирование там, инициалзация или возврат указатель на уже созданный объект
Dmitriy 😎
Тогда описанный тобой выше метод подходит
Dmitriy 😎
для твоей цели
Daniil
окей, спасибо
Oleg
Dmitriy 😎
Ну да, целесобразность такого интерфейса – это уже другой вопрос)