@proGO

Страница 1632 из 1674
Daniel
14.08.2018
14:04:01
да

Roman
14.08.2018
14:04:43
обычно при долгом расписывании находится ответ
+ или хотя-бы нейросеть на ходу тренируясь оптимизирует описание сжимая и сокращая его удаляя ненужные "ээээ" да "мэээ" которых в realtime речи всегда много

А что если он написал сценарий для ролика, прописал все реплики, потом снял видос, смонтировал, а вы не хотите смотреть?
ага "писал сценарий" цитирую: запись пошла... видео просто в таком.. видео формате ... и сразу-же перейду к коду... или к ошибке... лучше скорее всего к ошибке и так получается, что полезной информации в этом потоке наверное 20%, а всё остальное - потраченное время зрителя

не делайте так

Google
Vadim
14.08.2018
14:09:31
+

Roman
14.08.2018
14:11:48
да
спасибо

Combot
14.08.2018
14:11:48
Roman Sharkov (0) увеличил репутацию Daniel Podolsky (4)

Vladimir
14.08.2018
14:41:31
rtmp - труп
rtmp в первую очередь подходит мне из-за nginx-rtmp-module А так да...

Человек
14.08.2018
15:22:12
Здравствуйте, как мне оптимизировать производительность Go кода? ОС: шиндовс 8.1 x32-64. Суть работы: приложение подключается последовательно к 30 БД (локальных БД), копирует данные в temp файл (ибо эти БД могут использовать другие приложения), считывает данные из temp файла и записывает считанные дынные с БД в текстовые файд "query.txt". Приметка: в БД может быть от 10 строк до 7 тысяч строк. На все это уходит секунд 6-7 на мощном ноутбуке, а если ещё и запускать на более слабых пк/ноутбуках то может занять более 25 сек. Но я то знаю что может быть результат намного лучше, но вот только не знаю как сделать так чтоб результат был лучше, извините за тафтологию. Код: https://pastebin.com/sHYDevDK

Subbotin
14.08.2018
15:44:44
А потом выпилил open из цикла и вытащил его наружу

Человек
14.08.2018
15:48:34
Subbotin
14.08.2018
15:49:24
Я как раз намекал на обойтись без файлов

Человек
14.08.2018
15:50:21
Я как раз намекал на обойтись без файлов
Всё в БД записывать? Подумаю над этим. Но пока у меня работа с файлами идет, а из БД конкретно получение информации

Subbotin
14.08.2018
15:51:15
Имеет, без БД не обойтись. Окей, сейчас попробую выпилить наружу функцию
Ну просто стоит понимать, что 10000 тысяч опенов на файл это медленно

Человек
14.08.2018
15:52:02
Ну просто стоит понимать, что 10000 тысяч опенов на файл это медленно
Ок. То есть когда я сейчас создаю файл в цикле я создаю его 100500 раз?

Google
Человек
14.08.2018
15:52:12
Он же 1 раз создается, по идее цикл тут не влияет ни на что

Ибо там стоит флаг os.O_APPEND

Zver
14.08.2018
15:54:57
Ибо там стоит флаг os.O_APPEND
И? А открывается хренову кучу раз.

Человек
14.08.2018
15:55:29
И? А открывается хренову кучу раз.
А, точно, извиняюсь за тупость

Zver
14.08.2018
15:56:05
Открытие файла за цикл вынести надо.

Человек
14.08.2018
16:12:15
Открытие файла за цикл вынести надо.
Вынес, но чет не очень то и помогло.

Lesha
14.08.2018
16:19:33
Вынес, но чет не очень то и помогло.
показывай что получилось

Человек
14.08.2018
16:21:55
показывай что получилось
Сейчас ещё профилирование врублю, но это изменение заметно только на доли секунды

Lesha
14.08.2018
16:24:15
да, профайлер очень поможет.

Subbotin
14.08.2018
16:24:20
Можно ещё вместо sprintf делать fprintf, но это экономия на спичках

Lesha
14.08.2018
16:24:45
Можно писать не каждую строчку, а накапливать буффер и вконце его сливать в файл

Subbotin
14.08.2018
16:25:29
Lesha
14.08.2018
16:26:05
Типа того: var buffer bytes.Buffer for i := 0; i < 1000; i++ { buffer.WriteString("a\n") } buffer.String() // Write to file

Subbotin
14.08.2018
16:26:18
Кстати что за БД?

Человек
14.08.2018
16:26:37
Ну это все как я понял максимум что сократит время на 1-2 сек максимум ?

Lesha
14.08.2018
16:27:10
ну это при условии, что тормозит именно запись в файл. Можно запустить без записи в файл и посмотреть время. Возможно, из БД медленно забираешь

mysql
точно не sqlite?

Человек
14.08.2018
16:29:02
точно не sqlite?
извиняюсь, перепутал это sqlite

Google
Человек
14.08.2018
16:29:49
ну это при условии, что тормозит именно запись в файл. Можно запустить без записи в файл и посмотреть время. Возможно, из БД медленно забираешь
Хотя я сейчас так протестировал, это похоже связанно с самой БД ибо я только что поптылася открыть 60 файлов и записать в них примерно по 4 тысячи строк и вышло намного быстрее чем через БД

Поэтому походу можно сказать я достиг предела

Subbotin
14.08.2018
16:34:23
Это очень странно. Выбрать из sqlite 10k строк это быстро

Alexander
14.08.2018
16:34:31
а нет ли проблемы в Next()? никогда не работал с бд из го, если убрать все из цикла, сильно быстрее станет? либо убрать пока только запись, то есть найдите для начала узкое место, прежде чем оптимизировать что-то

Zver
14.08.2018
16:34:32
Поэтому походу можно сказать я достиг предела
Попробуй чтение проводить в несколько потоков.

Alexander
14.08.2018
16:34:41
а так - получается просто гадание какое-то

Zver
14.08.2018
16:35:33
Ну так это самым первым надо было делать, через профилер прогнать.

Alexander
14.08.2018
16:35:44
и у вас в цикле или опечатка или что if _, err = wfile2.WriteString(hkInfo); err != nil { fmt.Println(err) }

а самого объявления wfile2 не нашел

Человек
14.08.2018
16:36:30
Ну так это самым первым надо было делать, через профилер прогнать.
я просто через профайлер не когда ничего не делал) сегодня только начал его юзать, раньше он был мне не нужен, поэтому не знаю что и как там

Alexander
14.08.2018
16:39:26
Да можно и по-старинке просто время замерять самому

Не такой большой уж и кол

Код

Человек
14.08.2018
16:40:07
Да можно и по-старинке просто время замерять самому
можете подсказать комманду на винде пожалуйста? ибо на linux есть time

Subbotin
14.08.2018
16:40:44
Речь о t =time.Now() и print(time.Now().Sub(t))

Roman
14.08.2018
16:41:29
нужно ещё научится это делать, ибо я вэтом 0
Go для этого предоставляет все нужные инструменты, профайлинг CPU, latency, памяти... чего угодно просто нужно выделить пару дней и прокурить тему

Человек
14.08.2018
16:42:09
Речь о t =time.Now() и print(time.Now().Sub(t))
Ок. Я думал о времени измерения выполнения приложения user time, system time и т.д

Google
Человек
14.08.2018
16:44:29
Речь о t =time.Now() и print(time.Now().Sub(t))
EEST это и есть время выполнения программы?

Речь о t =time.Now() и print(time.Now().Sub(t))
я даже не ожидал, выдало 10 секунд

10.195 *

Artem
14.08.2018
16:46:14
Речь о t =time.Now() и print(time.Now().Sub(t))
А потом половина линтеров оклеветает тебя, потому что не знаешь о time.Since(t)

Alexander
14.08.2018
16:47:30
Человек
14.08.2018
16:51:48
Господа, мне сейчас один очень умный человек сказал что нету никакого Database Locked (Ибо когда я открывал через DB Browser for SQLITE мне выдавало эту ошибку и пришлось закрывать посторонние приложения), сейчас же убрал все функции копирования и результат сократился на 4 секунды)

Если выпелить ещё несколько функций думаю можно и до 3 сек дотянуть

Будет вообще прекрасно

Roman
14.08.2018
16:57:57
Ну просто стоит понимать, что 10000 тысяч опенов на файл это медленно
Откуда такие цифры? И зачем вообще постоянно открывать файлы?

Вынес, но чет не очень то и помогло.
Ожидаемо, потому что там надо сильно постараться

Subbotin
14.08.2018
16:59:19
Откуда такие цифры? И зачем вообще постоянно открывать файлы?
Ну у чувака в коде был опен на каждую строку, а строк 10к

Alexander
14.08.2018
17:00:20
Буферизация записи неплохо бы помогла тоже

А сам селект, кстати сколько выполняется?

Roman
14.08.2018
17:01:17
Человек
14.08.2018
17:02:14
А сам селект, кстати сколько выполняется?
смотря сколько строк в таблице, допустим 44 строки = 23 мс (выдает db browser)

Alexander
14.08.2018
17:03:06
Ну так вы же выбираете все строки в коде из таблицы, сколько уходит на именно этот sql?

Человек
14.08.2018
17:04:23
Ну так вы же выбираете все строки в коде из таблицы, сколько уходит на именно этот sql?
хрен его знает, я не знаю как замерять время sql запроса в Go ))

Alexander
14.08.2018
17:04:46
Ну, в том же браузере

Explain там, explain analyze

Хз что там в SQLite есть

Google
Alexander
14.08.2018
17:05:26
Почему то есть стойкое ощущение, что нас тут троллят

Человек
14.08.2018
17:07:15
unbelievable xdd 9к строк = 24 мс . А так я думаю что вы меня троллите ))

Я тут вообще 0 на палочке

Если вы про СТРОКИ из ВСЕХ БД вместе взятых то я не знаю как это замерить

Alexander
14.08.2018
17:09:01
Если секретного ничего нет - кинь весь проект архивом в личку или сюда, хз, домой доеду - поковыряюсь

Человек
14.08.2018
17:09:24
Буферизация записи неплохо бы помогла тоже
как ответил @Tratatatataas ? через buffer.Buffer?

Человек
14.08.2018
17:10:45
Ок, сейчас попытаюсь. Да вообщем меня сейчас устраивает результат, сейчас попробую с буферизацией и всё) У меня не высоконагруженные системы чтоб заботится о каждой НАНО секунде)

Vadim
14.08.2018
18:23:39
Привет, когда я беру и изменяю слайс из мапы, то данные во втором слайсе будут равны данным в первом слайсе?

Daniel
14.08.2018
18:24:02
а?!

Vadim
14.08.2018
18:27:33
Структура: map[int][]int Если я беру слайс происходит, то новый слайс указывает на тот же массив или происходит копирование?

Daniel
14.08.2018
18:29:07
слайс копируется, массив остается, конечно

Vadim
14.08.2018
18:30:50
Спасибо, а то начал сомневаться)

Roman
14.08.2018
19:14:50
в Go принято писать ошибки с малой буквы? типа: fmt.Errorf("some error occurred") вместо fmt.Errorf("Some error occurred")

Danil
14.08.2018
19:32:59
не подскажите с какими флагами собрать ехе файл из под линукса?

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