3 / 2 / 1
Регистрация: 28.05.2020
Сообщений: 172

Ускорение алгоритма за счет разбиения оного на потоки

24.04.2023, 16:31. Показов 2614. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, есть алгоритм кодирования со строками огромной длины, работает вроде бы быстро,но то что нужно закодировать по размерам ну просто огромное(13,5 миллионов символов) . На то чтобы это закодировать и раскодировать уходит около 150 минут XD. Если я попытаюсь разбить его на потоки( System.Threading) ,скажем так на штук 16,будет ли от этого смысл ? Просто прочитал что хочешь не хочешь процессор все равно по сути последовательно делает операции.Спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.04.2023, 16:31
Ответы с готовыми решениями:

Параллельное программирование, алгоритм разбиения на потоки
Мне нужно написать программу с применением параллельного программирования, я описал алгоритм разбиения на потоки, но он не совсем точно...

Реализация алгоритма разбиения множества
Есть задача, необходимо написать код. Буду очень признательная за помощь! Под разбиением n-элементного множества X на k блоков...

Оптимизация алгоритма разбиения по корзинам
Есть практическая задача. Задача: Есть несколько n (5-20) людей, для всех из них задан вес (0-100). надо наиболее оптимально поделить...

28
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
25.04.2023, 21:03
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Lesch Посмотреть сообщение
и главное он короче сильно хоть и не понятно что он в себе несет и почему такой короткий.
Зависит от формата хранения изображения. По-пиксельно хранить только bmp, насколько знаю.
1
3 / 2 / 1
Регистрация: 28.05.2020
Сообщений: 172
25.04.2023, 21:34  [ТС]
Переписал и заменил все на байты, на удивление, в скорости он почти не поменялся, 0.05с сэкономил . Но ввиду того что теперь сразу байты а не символы, теперь в 2 раза меньше данных для обработки и в буфер помещается аж в 8 раз больше данных. Будем дальше тестить
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
25.04.2023, 21:59
Цитата Сообщение от Lesch Посмотреть сообщение
Переписал и заменил все на байты, на удивление, в скорости он почти не поменялся, 0.05с сэкономил .
Покажите код.
1
3 / 2 / 1
Регистрация: 28.05.2020
Сообщений: 172
27.04.2023, 21:52  [ТС]
Я не думаю что это вам что то даст. Там очень много операций

C#
1
2
3
4
5
6
7
8
//ПРОЖЛОЛИВАЯ ОПЕРАЦИЯ
                OutByteArr3(
                    out byte[] Encoded, //СЮДА ВСТАВЛЯЕМ
                    ReedSolomonOps.EncodeMessage(
                        new GF_Poly(Source), //ЭТО ТО ЧТО КОДИРУЕМ
                        new GF_Poly(ReedSolomonOps.GenerateGenerator(128)) //ПОЛИНОМ ГЕНЕРАТОР
                    ).GetByteArr()
                );
При использовании массива байт из png , работает быстрее , но не со всеми фото, проскакивает 1 ошибка и все на смарку, я просто не успею найти проблему, времени нет, придется использовать способ с разбивкой по цветам он работает без ошибок и визуально понятно как работает(в реальном времени рисует на экране),до следующей недели должен как то ускорить его, скорее всего буду пытаться на ядра процессора распределить как то.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
28.04.2023, 16:42
Lesch, при всем уважении, вас просили показать не одну строчку кода разнесеную на 8, а кусок проекта, из которого можно хотя бы минимально понять происходящее. И глядя на out byte[] Encoded, есть подозрение что у вас очень посредственные базовые знания по C#, и стоит ревьювать весь ваш код, а не отдельные куски.
0
3 / 2 / 1
Регистрация: 28.05.2020
Сообщений: 172
28.04.2023, 17:20  [ТС]
Я бы наверное и не писал на форуме, если бы знания были достаточны Я ведь для этого и пишу
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
28.04.2023, 17:39

Не по теме:

Lesch, вы должны это воспринимать не "ой, меня обидели", а как "где мне нужно подтянуть знания". Ну или по крайне мере спросить почему out byte[] выглядит как "скорее всего неправильно". Любой массив ссылочный, и очень странно что вы его пометили как out. Либо вы постоянно плодите новый массив и возращает вместо кортежа/класса через out (подход "не очень, но ладно"), либо он там вообще лишний.



Это все лирика. Главный вопрос остался
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Покажите код.
0
3 / 2 / 1
Регистрация: 28.05.2020
Сообщений: 172
28.04.2023, 17:56  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
OutByteArr3(
                    out byte[] Encoded, //СЮДА ВСТАВЛЯЕМ
                    ReedSolomonOps.EncodeMessage(
                        new GF_Poly(Source), //ЭТО ТО ЧТО КОДИРУЕМ
                        new GF_Poly(ReedSolomonOps.GenerateGenerator(NumOfECC)) //ЭТО ПОЛИНОМ ГЕНЕРАТОР
                    ).GetByteArr()
                );
 
private void OutByteArr3(out byte[] bytes, byte[] Arr)
        {
            bytes =Arr;
        }
 
public static GF_Poly EncodeMessage(GF_Poly MessagePoly, GF_Poly GenPoly)
        {
            if (0 == GenPoly.Len) { return MessagePoly; }
            GF_Poly Rezult = MessagePoly.MultiplyByXPower(GenPoly.Len - 1);//генератор полинома умножить на наше сообщение которое нужно кодировать
            GF_Poly Remndr = Rezult % GenPoly;
            return Rezult + Remndr;
        }
 
        public GF_Poly MultiplyByXPower(uint PowOfX)
        {
            //добавляет нули в начало полинома
            if (0 == PowOfX) { return this; }
            GF_Poly ret = new GF_Poly(CoefArrLen + PowOfX);
            for (uint i = 0; i < CoefArrLen; i++)
            {
                ret.CoefArr[i + PowOfX] = CoefArr[i];
            }
            return ret;
        }
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
28.04.2023, 19:30
Цитата Сообщение от Lesch Посмотреть сообщение
C#
1
2
3
4
private void OutByteArr3(out byte[] bytes, byte[] Arr)
 {
 bytes =Arr;
 }

окей..... можно поинтересоваться, что на ваш взгляд делает этот код?


По EncodeMessage: что такое GF_Poly? Вообще, возможно стоит таки скинуть архивом весь код? Ну или ту часть проекта, отвечающую за преобразование данных. Просто мне казалось очевидным, что никто кроме вас не сможет понять что за классы там наобъявляли, какие методы что делают (а у вас тут еще и перегрузки операторов).

P.S. честно, на мой скромный взгляд вам нужно почитать про Stream и попытаться сделать подход через него.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.04.2023, 19:30

Реализация алгоритма разбиения числа N на M слагаемых
Коллеги, привет! В задаче требуется найти количество разбиений натурального N на 4 слагаемых. Решил ее безобразно - перебором, теперь хочу...

Оптимизация алгоритма разбиения строки с цифрами на составляющие
Приветствую, форумчане) Написал простенький алгоритм по разбиению строки с числами на возможные составляющие, но он получает не все...

[Sony Vegas 13] Ускорение обработки видео за счет подключения GPU
Раньше с Sony Vegas не работал. Наше что можно подключить GPU для быстроты обработки рендеринга видео. Моё исходное видео - 1920 х 1080...

Lineage II - ускорение загрузки локаций за счет переноса текстур на USB flash drive
Где-то встречал темку (жаль ссылку не сохранил), что можно ускорить загрузку локаций в Lineage II (что особенно важно при осадах, масс пвп)...

Определить сетку разбиения для нечеткой модели на основе алгоритма кластеризации Густавсона-Кесселя
Помогите пожалуйста с заданием: Нужно определить сетку разбиения для нечеткой модели на основе алгоритма кластеризации Густавсона-Кесселя


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Опции темы

Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru