@gogolang

Страница 764 из 1630
none
21.01.2018
17:29:46
должно отдавать 3 строчки, но отдает 2

Ilya
21.01.2018
17:37:51
Когда jobs =nil, вываливаешься из цикла не успевая вычитать все из резалт канала

none
21.01.2018
17:38:19
как решить?

Google
Александр
21.01.2018
17:53:36
он успевает пройти же

Alexander
21.01.2018
17:55:09
а гоурутины что стопаются?
При выходе из main все горутины просто прибиваются без ожидания

Александр
21.01.2018
17:55:54
странно что даже вангига нету

как решить?
когда ты сделал break, то все вываливается из цикла и все гоурутины умирают. Выход использовать waitgroup

none
21.01.2018
17:57:10
ок, спасибо буду пробывать

Александр
21.01.2018
17:57:49
а может ты объяснишь задачу? а то как то стартовать гоурутины который хреначат в канал на основе сообщения в канал странно

none
21.01.2018
18:09:50
ну я просто смотрел как можно селектом работать с каналами

чисто ради интереса

нет задачи конкретной

Александр
21.01.2018
18:10:13
ты имей введу что гоурутины плодить бесконечно нельзя

оптимально это по количеству ядер

none

Google
none
21.01.2018
18:11:04
спасибо за совет :)

Александр
21.01.2018
18:12:27
спасибо за совет :)
в твой ситуации лучше запустить несколько хедлеров на 1 канале (одинаковых), с буферизированным каналом

meehalkoff✪
21.01.2018
18:12:49
ты имей введу что гоурутины плодить бесконечно нельзя
Звучит как будто выдрано из контекста

Александр
21.01.2018
18:12:56
и внутри уже не плодить гоурутины

Звучит как будто выдрано из контекста
я просто предупредил, что это далеко не бесплатно и радужно ? От того что наделаешь 10000 гоурутин врятли у тебя будет приложение с понями и радугой

я на эти грабли уже вьехал

и я про гоурутины которые долго выполняются

Mykyta
21.01.2018
18:16:25
и я про гоурутины которые долго выполняются
Конечно, есть оверхед в рантайме при переключении контекстов планировщиком

Timur
21.01.2018
18:53:21
я просто предупредил, что это далеко не бесплатно и радужно ? От того что наделаешь 10000 гоурутин врятли у тебя будет приложение с понями и радугой
А что у вас в горутинах? Традиционно люди не знают для чего горутины нужны и пихают туда вычислительные операции, а потом жалуются

Александр
21.01.2018
18:54:00
а куда по вашему вычислительные операции? ? там на гоурутинах дерево перестраивалось

Timur
21.01.2018
18:54:05
Если у вас только вычисления то количество горутин равно количеству ядер

Александр
21.01.2018
18:54:10
ничего вроде сложного но очень много элементов

Timur
21.01.2018
18:55:00
Перестроение дерева - вычисления

Рантайм тоже наложит свою плату

Александр
21.01.2018
18:57:57
оно рекурсивное, дерево не большое, на пару миллионов записей ?

корневых веток около 40

по количеству ядер

Timur
21.01.2018
19:01:23
Альтернатива для чего? Какая задача? Если задача - сделать вычисления параллельно то горутины по количеству ядер + канал

Александр
21.01.2018
19:01:52
просто вы так написали, будто есть еще какой то инструмент помимо гоурутин ?

Google
Timur
21.01.2018
19:01:53
Но это же не абстрактная задача в вакууме. Контекст какой?

Александр
21.01.2018
19:02:18
да я решил ее, год назад ?

я просто человеку написал как делать не стоило бы

Timur
21.01.2018
19:03:09
Ну я к тому, что в определенных задачах нужно 10к горутин и приложение при этом получается с понями и радугами))) вопрос в том, какая задача

Александр
21.01.2018
19:03:36
врятли оно получится с понями на 10k одновременно работающих гоурутин ?

накладные расходы будет шо писец

Timur
21.01.2018
19:03:55
Так они не могут одновременно работать никогда

Одновременно работает количество горутин равное количеству ядер

Александр
21.01.2018
19:04:14
блин... ну не прикапывайтесь ?

Timur
21.01.2018
19:04:27
Ок)

Александр
21.01.2018
19:04:40
я относительно языка говорил, так то ежу понятно

Timur
21.01.2018
19:05:46
Одновременно 10к горутин спокойной существуют в рантайме, даже 100к если хотите, но опять-таки смотря что внутри горутины и какая задача))

Больше не придираюсь)))

Александр
21.01.2018
19:06:54
так лучше приложение не строить ?

один хрен упремся в проц

Timur
21.01.2018
19:07:07
Бывают разные задачи)

Александр
21.01.2018
19:07:16
даже если это api http у которого хендлеры

но вообще я мечтаю когда нибудь пропускная способность вырастет настолько что не будет важно обмениваемся мы внутри платы или между ПК

тогда возможно будет делать мега-гиго процессоры, по сети

Google
Александр
21.01.2018
19:12:57
и запускать приложения под винду на все доступные сетевые ядра (100000 тысяч+- штук) ? без написания микросервисов

Zaur
21.01.2018
19:35:10
?

народ, как в шаблонизаторе работать с вложенными циклами? . это текущий итератор. А если у меня 2 вложенных цикла и я хочу внтури второго иметь к обеим доступ?

Alexander
21.01.2018
19:36:36
Slava
21.01.2018
20:36:32
а никто не хочет добавить поддержку map[string]string, map[string]int в мою библиотеку парсинга флагов в структуры?

https://github.com/octago/sflags/issues/7

Zaur
21.01.2018
23:16:04
Почему интересно в этом задании голанг с таким треском проигрывает С++, java и остальным http://benchmarksgame.alioth.debian.org/u64q/binarytrees.html

Admin
ERROR: S client not available

Zaur
21.01.2018
23:19:00
2.5 секунды плюсы 34 (!) секунды голанг Задание сгенерировать Бин дерево и посчитать количество узлов для каждой глубины

Почему интересно такой эпик фейл. Медленная работа с памятью? Рекурсия?

В остальных тестах, кроме регулярок, +- на уровне плюсов и rusta

Max
21.01.2018
23:30:00
Ну можешь оптимизировать: http://benchmarksgame.alioth.debian.org/u64q/program.php?test=binarytrees&lang=go&id=4

Zaur
21.01.2018
23:31:27
Ну можешь оптимизировать: http://benchmarksgame.alioth.debian.org/u64q/program.php?test=binarytrees&lang=go&id=4
Так знай я в чем причина, так и сделал бы ?. В продакшене так кончено никто не будет писать, но интересно почему такая разница.

Max
21.01.2018
23:31:44
Как у Go с хвостовой оптимизацией рекурсивных вызовов? Вот это: func bottomUpTree(depth int) *Node { if depth <= 0 { return &Node{nil, nil} } return &Node{ bottomUpTree(depth-1), bottomUpTree(depth-1), } } Можно развернуть в цикл например, если у него с этим не очень

Можно еще переписать WaitGroup на атомики. Посмотрел реализацию C++ Так они там используют OpenMP + Apache Portable Pool - не самый быстрый способ работы с парралельным кодом, так что там все еще быстрее может быть

Zaur
21.01.2018
23:46:08
По-моему проблема раскрытия рекурсии в цикл в том, что по условию нельзя хранить узлы ни в каких арраях и т.п. структурах данных

http://benchmarksgame.alioth.debian.org/u64q/binarytrees-description.html#binarytrees

Alexander
21.01.2018
23:48:00
http://benchmarksgame.alioth.debian.org/u64q/binarytrees-description.html#binarytrees
В целом главная проблема - сборка мусора. Это плата за удобство программирования

Простым добавлением debug.SetGCPercent(1000) в код бенчмарка я уменьшил время выполнения в два раза. При этом расход памяти вырос в 5 раз.

Совсем отключить сборщик мусора не получится, т.к. памяти нужно будет слишком много и всё сэкономленное время уйдёт на ввод-вывод при свопе

Google
Zaur
21.01.2018
23:54:55
Вот оно что.

А разница с c# и java это разница оптимизации работы сборщиков?

Mike
21.01.2018
23:56:32
А разница с c# и java это разница оптимизации работы сборщиков?
ну вообще еще язык приятнее у шарпов, много сахара приятного и параллельности с корутинами

Zaur
21.01.2018
23:59:30
ну вообще еще язык приятнее у шарпов, много сахара приятного и параллельности с корутинами
Так чё же они не добавили сахара в go, если это так ускоряет всё ??

Max
22.01.2018
00:10:08
Хотя смотрю атомики не сильно меняют картину в Go https://play.golang.org/p/PbTS6BmY6hU

Кстати почему play.golang.org не выводит время? Оно всегда нулевое

Slava
22.01.2018
00:13:59
Оптимизация такая

Там время виртуальное

И детерменированное

Как и рандом ;)

Max
22.01.2018
00:22:43
Рандом везде детерменинрован, если мы говорим о псевдослучайных генераторах, а не скажем рандом байтов в криптографии

Marlik
22.01.2018
00:29:29
Кстати, как простенький рандом сваять в одну строку? Желательно как-то так: r := int(random(timestamp))

Max
22.01.2018
00:48:40
random := rand.New(rand.NewSource(time.Now().UnixNano())) r := strconv.Itoa(random.Intn(math.MaxInt32))

Не знаю, может можно и проще, но это какой то пи** извиняюсь, даже в Си проще с этим

Max
22.01.2018
01:05:37
Можно чуть проще: rand.Seed(time.Now().UnixNano()) r := strconv.Itoa(int(rand.Int31()))

Mike
22.01.2018
02:09:16
а читалки /dev/urandom нет?

Max
22.01.2018
02:40:05
а читалки /dev/urandom нет?
Используй "crypto/rand" пакет b := make([]byte, 16) if _, err := rand.Read(b); err != nil { fmt.Println("error:", err) return } fmt.Println(b)

Проверка на err обязательна, так как буфер с энтропией может быть пустым

Страница 764 из 1630