
Alexey
25.05.2017
06:29:56


Brown
25.05.2017
06:33:11
Я сам плохо отношусь к глобальным переменным, считаю это зло, считаю лучше передавать в функцию, но у вас это вроде набор функций верно?
https://www.bsuir.by/m/12_100229_1_98218.pdf
вот тут страница 347

Google

Alexey
25.05.2017
06:35:42
ну я поэтому и спрашиваю. Есть общее мнение, что глобально что-то задачать плохо...
но вот в этому случае, если bot нужно вызывать не из main, то мне пришлось бы его передавать сначала в func github() потом из нее с func publish

Brown
25.05.2017
06:36:29
в пдф страница 347 в книге 326

Alexey
25.05.2017
06:36:29
какие еще есть способы решения таких вопросов кроме:
- глобальных переменных
- передачи в функцию

Brown
25.05.2017
06:37:27
Это 2 подхода, глобальная плоха тем что не ясен цикл ее жизни, не понятно когда она создана, какое у нее состояние и тд
То что я скинул подробно расписанно когда использовать
там 2-3 страницы

Alexey
25.05.2017
06:38:18
но третьего подхода нету? какой-то альтернативы, так?

Brown
25.05.2017
06:39:11
Ну если это просто какой то сервис менеджер, в котором нет никаких состояний, то думаю можно, хотя я бы не стал

Alexey
25.05.2017
06:41:48

Brown
25.05.2017
06:43:32
Кстати оч класная книга, считаю обезательной к прочтиению

Google

Brown
25.05.2017
06:44:05
У меня в бумаге 2016 г

Alexey
25.05.2017
06:44:05

Brown
25.05.2017
06:44:22
В электронке только 2012 находил
разницы там особой нет

Ivan
25.05.2017
07:35:47
У меня есть глупый вопрос.
У меня есть задача где всё время приходится мапы "объединять". Ну т.е map[string]int , суммировать значение по совпадающим ключам, добавлять отстуствующие.
Сейчас сделано как
for k,v:=range m2{
m1[k]+=v
}
вря ли тут что то ещё можно придумать, но это так часто происходит, что уже ужастно тормозит.
Нет ли случайно каких то советов, как это улучшить? Может хранить иначе, другие структуры.
Задача примерно как считать частотность слов в тексте. И такие мапы приходят как будто с разных параграфов и текстов.

i
25.05.2017
07:40:49
может string на числовое значение попробовать заменить
что-то вроде кодов хаффмана

Ivan
25.05.2017
07:43:44
помойму не выйдет же. если отельно справочник вести то мне в том справочнике пополнять

i
25.05.2017
07:45:17
Вроде бы у гугла была какая-то супер быстрая хэш таблица, может через cgo сделать

Ivan
25.05.2017
07:45:36
не помните имён?

i
25.05.2017
07:46:37
http://incise.org/hash-table-benchmarks.html

Ivan
25.05.2017
07:47:48
Спасибо, понятия не имею как это юзать, но гляну

i
25.05.2017
07:49:54
На C++ переключиться, а результат в go отдавать :)

Ivan
25.05.2017
07:50:41
эх
может какие нить волшебные базы бывают
что б туда мэпы передавать а оно там как нить паралельно
мне даже синхроннывй ответ то не нужен

i
25.05.2017
07:51:43
Кстати, может попробовать распаралелить

Ivan
25.05.2017
07:52:18
Вынести хранение куда нить, и поставить фоновый процесс пусть себе объединяет

i
25.05.2017
07:54:05
Не думаю, что у go для этого можно много оптимизаций придумать, если только распараллелить

Google

Daniil
25.05.2017
08:32:57


Ivan
25.05.2017
08:34:49
1. Значения не сортированы
2. Обычно один меп сильно больше другого по размеру (аккумулирует данные) поэтому я делаю range по меньшему
3. Ключи по размеру все одинаковы, и рандомны. Хорошая аналогия слова в тексте.
4. Элементов десятки тысяч

Daniil
25.05.2017
08:35:38
Если нет - плохо. Можешь посмотреть как в яве у строки подсчитывается хэш
Сразу же вопрос, а в го можно задать в мапу кастомный компаратор или объявить таковой для типа данных?

Brown
25.05.2017
08:37:23
не то но примерно

Daniil
25.05.2017
08:38:15
Но можно хранить строку и хэш к ней рядом. Есть маленькая надежда что го сначала сравнит хэш а потом строку
Тогда взлетит)))

Ivan
25.05.2017
08:46:05
Четсно говоря я про этот хеш вообще не понимаю
у меня там просто map[string]int
я сам хеши никакие не считаю ж

Daniil
25.05.2017
08:47:15
Напиши на си/плюсах

Илья
25.05.2017
08:48:29
gc?

Ivan
25.05.2017
08:49:04
эти циклы объедитнни я мепов (сотни их) сжирают время
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

Google

Илья
25.05.2017
08:53:17
http://jmoiron.net/blog/go-performance-tales/
если упирается именно в производительность map, то, и правда, придется переходить на int

Brown
25.05.2017
08:54:30
Я думаю это просто выделение памяти

Daniil
25.05.2017
08:54:51

Илья
25.05.2017
08:56:39

Ivan
25.05.2017
08:56:47
хеш на интах подразумевает же словарик где то ряом, так ведь?

Илья
25.05.2017
08:58:34
хмм, да, но по нему бегать так часто не придется
по идее

Ivan
25.05.2017
08:58:51
ну пореже, да.

Daniil
25.05.2017
09:03:23
Так а как мапа на го работает кто-нибудь вкурсе?

Ivan
25.05.2017
09:08:14
откуда ж

nk2ge5k
25.05.2017
09:15:40
https://golang.org/src/runtime/hashmap.go

Ильдар
25.05.2017
09:59:29
Кстати, интересно. Dropbox начинали свою разработку на Go, потом отказались от него. Почему?

Mike
25.05.2017
09:59:43
Например, посмотрели на цены инженеров

Alexander
25.05.2017
09:59:53
А когда они успели отказаться?

Ильдар
25.05.2017
10:00:33
Недавно был на докладе, там говорилось, что они от него ушли, или частично отказались.

Alexander
25.05.2017
10:00:53
А ссылку можно?

Daniil
25.05.2017
10:03:40

Ivan
25.05.2017
10:04:24
Да, верно, все ж открыто

Slava
25.05.2017
13:35:26

Google

?FLERRY?
25.05.2017
13:54:33
Ребята, вот как правильно сделать:
есть реп на гитхабе, в котором лежит один проект. Но на Java. Сейчас этот же проект я полностью переписал на Go со всеми улучшениями и дополнениями. Эту, так скажем v2.0 запихнуть в тот же реп в другую ветку или в новый реп?

Ivan
25.05.2017
13:55:37

?FLERRY?
25.05.2017
13:55:46
понял, спасибо :)

Ivan
25.05.2017
13:56:15

Илья
25.05.2017
13:57:18

?FLERRY?
25.05.2017
13:57:30
??

Alexei
25.05.2017
14:20:57
я тоже за новый реп, реп2 )

?FLERRY?
25.05.2017
14:22:04
:D
новая жизнь
репорт кард оценил в NOT BAD
осталось комменты проставить и A+ будет :D
golint постоянно ругает за них, подлец

dukeBarman
25.05.2017
16:38:25

Илья
25.05.2017
16:40:10
а в проекте написать ABANDONED DEPRECATED PLEASE LEAVE!

?FLERRY?
25.05.2017
17:18:39
?
Прямо капсом
Спасибо, кстати, за советы :3

Dmitriy
25.05.2017
17:35:40
Добрый день. Не подскажите? В golang планируются дженерики в новых версиях?

Ivan
25.05.2017
17:36:24
нет