@proGO

Страница 181 из 1674
Zver
27.07.2016
18:11:10
Лопатится будет одно и то же изображение много раз или разные?

Kirill
27.07.2016
18:11:48
да это отрисовщик. лопатиться будет новый кадр.

Zver
27.07.2016
18:12:31
Тогда просто пройтись по всем и все.

Kirill
27.07.2016
18:13:08
я сначала сделал цикл в цикле и всё. но как-то медленно это

Google
Zver
27.07.2016
18:13:22
Вообще надо знать конкретно, что делаться будет.

По идее просто перебор всех пикселей должен делаться быстро, если память не выделяется в цикле.

Kirill
27.07.2016
18:14:58
для начала, вызываться callback с передачей туда x, y, котрый будет отдавать цвет, который мы поставим в пиксель

хотя, даже не для начала, а вообще.

Zver
27.07.2016
18:18:14
Ну вообще должно быстро быть, если не выделяется память при установке пикселя.

Пиксели просто случайные устанавливаются? И никакого вывода изображения не происходит в самом процессе?

Kirill
27.07.2016
18:20:13
пиксели не случайные, вывод изображения происходит — на экран. в моем случае для разработки выводится в иксы. но уже после цикла.

Zver
27.07.2016
18:21:51
В общем все должно работать быстро. А код посмотреть можно?

Kirill
27.07.2016
18:23:06
В общем все должно работать быстро. А код посмотреть можно?
https://github.com/kirillDanshin/go-wde/blob/master/wdetest/wdetest.go#L153

Zver
27.07.2016
18:37:29
Гиф обязательно должнн быть?

Kirill
27.07.2016
18:38:39
Это осталось в наследство, да и не влияет, насколько я заметил

Zver
27.07.2016
18:44:51
Гиф это изображение с палитрой. Соответственно, каждая установка пикселя будет искать похожий в палитре, хотя при текущих мощностях и не должно сильно сказываться. Я бы преобразовал к rgba, а потом придется по всем пикселям не через функции, а напрямую беря данные из Pix и туда же их записывая.

Kirill
27.07.2016
18:48:18
Надо бы придумать, как это сделать быстрым не меняя суть примера

Google
Kirill
27.07.2016
18:52:38
распаралелить просчет, например

Zver
27.07.2016
18:54:07
Я сейчас планшета и попробовать не выйдет, может и не правильно думаю. Создать еще одно изображение rgba, нарисовать на нем с помощью draw прочитанное и работать с ним.

Распаралеливать смысла нет. Эту дребидень даже на пеньке первом моментально должно сделать.

Oleh
27.07.2016
18:55:52
а если вместо многих ифов юзать кейс, то мб чуть чуть ускорит

Kirill
27.07.2016
18:56:08
это микрооптимизации

я почему вообще говорю об этом коде

на иксах проскакивает черный экран при ресайзе

и после долгого дебага мне тогда причину найти не удалось

кроме как скорость кода в цикле

I
27.07.2016
18:57:56
Что насчет обработки на cuda?

Zver
27.07.2016
18:58:34
А какое время занимает прорисовка изображения?

Какой там куда?! Там каьькулятор моментально сделает. )

Daniel
27.07.2016
18:59:17
На самом деле - вопрос в кеше проца и предсказании

Zver
27.07.2016
18:59:32
Вообще проблема может быть просто в выводе.

Kirill
27.07.2016
18:59:49
Что насчет обработки на cuda?
nvidia у меня на убунте не хочет работать. да и потом, куда там cuda?

Daniel
27.07.2016
19:00:31
Читать доку

Экспериментировать

I
27.07.2016
19:00:49
Ну вот даже по количеству строк параллелизацию сделать. Правда, это будет медленней, скорей всего, чем перебор в лоб

Google
Daniel
27.07.2016
19:01:11
Поговорить с Тутубалиным

Zver
27.07.2016
19:02:01
Да не надо там параллельно ничего делать там же не хрен знает какое изображение.

Kirill
27.07.2016
19:02:29
Поговорить с Тутубалиным
это ты о каком из говоришь?

Zver
27.07.2016
19:04:48
А какое изображение? Какая размерность?

Kirill
27.07.2016
19:06:08
ну, в этом случае 300*300 в начале, а потом ресайз до скольки угодно

Daniel
27.07.2016
19:20:57
это ты о каком из говоришь?
Алексей, автор русского апача

Kirill
27.07.2016
19:22:05
Алексей, автор русского апача
окей, а в предсказании чего?

Daniel
27.07.2016
19:30:22
Ветвления

Подгрузки инфы в кеш из памяти

Lev
27.07.2016
19:40:25
а если вместо многих ифов юзать кейс, то мб чуть чуть ускорит
можно разбить на зоны отрисовки и избавиться от большинства if-блоков (например как if x < width/2 && y <= height/2 {pxColor = green} ) но они почти не повысят производительность. основная потеря, я думаю, будет в получении и установке пикселя

Kirill
27.07.2016
19:41:20
кстати, думал о разбивке на зоны отрисовки. не придумал имплементацию.

Lev
27.07.2016
19:43:07
предыдущий IF заменяется на for x := 0; x < w/2; x++ { for y:=0 y < h/2; x++ { s.Set(x, y, GREEN) }} если я правильно понимаю.

вообще для таких вещей в проекте (на C++, один из модулей системы наблюдения и ведения объекта) приходилось забивать на красоты и работать с картинкой как с одномерным блоком памяти. тогда на CPU можно было добиться нормальной скорости обработки (порядка 0.02..0.07 с на 1024x768 кадр в зависимости от. Правда там несколько сложнее, нежели просто получение / перекраска пикселя)

для нормальной скорости придётся зарыться в дебри CUDA / OpenCL

Oleh
27.07.2016
23:47:50
ребят, помогите понять в чем проблема создал чаны usersChan := make(chan vk.GroupsGetMembersVK) errorChan := make(chan vk.ParamsVKAPI) передаю в функцию go CounterPrints(usersChan, errorChan)

а вот функция func CounterPrints(usersChank <-chan interface{}, errorsChank <-chan interface{}) { chankUsersCount :=0 errorsCount := 0 tick := time.Tick(100 * time.Millisecond) for { select { case <-usersChank: chankUsersCount +=1 case <-errorsChank: errorsCount +=1 case <-tick: fmt.Printf("chankUsersCount:%w \n errorsCount:%w\n\n",chankUsersCount,errorsCount) } } }

просто счетчик

./hello.go:85: cannot use usersChan (type chan myvkapi.GroupsGetMembersVK) as type <-chan *interface {} in argument to CounterPrints ./hello.go:85: cannot use errorChan (type chan myvkapi.ParamsVKAPI) as type <-chan *interface {} in argument to CounterPrints почему ошибка?

Kirill
27.07.2016
23:49:36
потому, что типы разные

Google
Oleh
27.07.2016
23:50:01
я пробовал сначала с однаковыми

стоп

заработало

непонятно, но да ладно

так interface{} это же любой тип, разве нет?

Kirill
27.07.2016
23:52:38
пустой интерфейс — это пустой интерфейс. но под него любые типы подходят, да

Oleh
27.07.2016
23:53:28
это и имел введу, интересно получается..

Admin
ERROR: S client not available

Oleh
27.07.2016
23:53:37
но спасибо

Kirill
27.07.2016
23:53:50
не за что

Oleh
28.07.2016
11:30:07
usersChan <- *r у меня зависает здесь код, почему? чан пустой func VkGetMembersGraber(params vk.ParamsVKAPI,usersChan chan vk.GroupsGetMembersVK,errorChan chan vk.ParamsVKAPI ) { r, err := vk.GroupGetMembersVKAPI(params ) if err != nil { fmt.Print("send to chan2") errorChan<- params } fmt.Print("send to chan1") usersChan <- *r }

Slava
28.07.2016
11:31:18
может никто не читает оттуда?

Oleh
28.07.2016
11:31:52
ну так можно ж отправить, а потом принять разве не так?

сделал тест, и он нахрен завис

http://pastebin.com/G49UdRFd код теста

melancholiac
28.07.2016
11:33:05
главный плюс го в многопоточности?

Slava
28.07.2016
11:33:48
олег, если канал без буфера, то никуда отправить нельзя, пока с той стороны никто не читает

поэтому твой код и ждёт

Google
Slava
28.07.2016
11:34:22
https://tour.golang.org/concurrency/2

нужно пройти тур

Oleh
28.07.2016
11:35:02
прошол, но по ходу, не очень внимательно переводил..

если нужно, чтобы не больше 20 запросов одновременных на сервер было, как лутше сделать? я сделал костыль из for *inwork>19 { time.Sleep(25* time.Millisecond) }

в цикле где генерятся рутины

Daniel
28.07.2016
14:50:53
я бы запустил бы 20 горутинок, и передал бы им канал

и в канал бы этот писал урлы

Oleh
28.07.2016
14:51:18
елегантно

?

Daniel
28.07.2016
14:51:39
ну - стандартно для go

Максим
28.07.2016
14:51:55
go-way

Oleh
28.07.2016
14:51:57
привыкнуть нужно)

и в канал бы этот писал урлы
а как определить что все урлы загрузились? чтоб отключить прогу юзать sync.WaitGroup ?

Daniel
28.07.2016
14:55:12
да

Oleh
28.07.2016
14:56:11
да
но горутины будуть ждать с канала данные в бесконечном цикле

слоожно

Daniel
28.07.2016
14:58:59
конечно, будут ждать

а потом снаружи канал закроют, и они выйдут

Oleh
28.07.2016
15:00:29
да, понял, круто! спасибо

Страница 181 из 1674