Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
3 / 2 / 1
Регистрация: 28.05.2020
Сообщений: 172

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

24.04.2023, 16:31. Показов 2568. Ответов 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,175
Записей в блоге: 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,175
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru