|
23 / 23 / 30
Регистрация: 23.10.2012
Сообщений: 344
|
||||||
Как распараллелить код шифрования Гронсфельда?29.10.2014, 13:17. Показов 1989. Ответов 3
Метки нет (Все метки)
Это код шифра Гронсфельда, но при достаточно большом объеме текста шифрование занимает много времени. Если разделить текст на блоки по длине ключа и выполнять эти блоки в отдельных потоках(кстати, как узнать сколько лучше создать потоков для определенного количества блоков).
0
|
||||||
| 29.10.2014, 13:17 | |
|
Ответы с готовыми решениями:
3
Реализовать программу шифрования/дешифрования по алгоритму Гронсфельда Шифр Гронсфельда - переписать код с C# |
|
|
|
| 29.10.2014, 14:46 | |
|
XaKO, Parallel.For?
1
|
|
|
[Bicycle Reinventor]
|
|
| 29.10.2014, 15:05 | |
|
Поскольку используется шифр Гронсфельда, шифрование последующих блоков текста никак не зависит от результата шифрования предыдущих блоков, следовательно разделение текста на блоки может быть весьма свободным. Целесообразным выглядит разделение текста на количество блоков, соответствующее количеству потоков.
Вопрос о количестве потоков уже совсем другой. На самом деле он весьма хитрый, и однозначного ответа быть не может. С первого взгляда может показаться, что чем больше потоков, тем выше производительность, но это совсем не так. У потоков есть такая характеристика, как переключение контекста, на которую расходуется процессорное время. Большое количество потоков не только не увеличит производительность,но может и катастрофическим образом понизить её. Единственный верный способ узнать, какое количество потоков будет оптимальным - сделать замеры разнообразных вариантов. Неплохим началом в таком случае будет принцип "количество потоков = количество ядер", далее можно поиграть с вариантами. Однако стоит учесть ещё одну важную вещь. Основная выгода распараллеливания определённого процесса на потоки заключается в простом принципе: когда процессор ждёт завершения определённого процесса и свободен, почему бы ему не заняться чем-то другим? Однако если вычислительный процесс и без того сильно загружает процессор, добавление потоков не приведёт к повышению производительности, только снизит её. Поэтому в любом случае необходимо делать замеры, результаты которых зависят от железа и от того, насколько данный код шифрования грузит процессор. Стоит также попробовать и Parallel.For, поскольку он автоматически определяет необходимое количество потоков своими хитрыми механизмами (которые тоже не всегда могут быть истиной в первой инстанции). Насчёт конкретной реализации, вариантов также много. К примеру, Вы можете, определившись с количеством потоков, разделить входящий текст на равные блоки по количеству будущих потоков, каждый блок сохранить отдельно. Далее в основном потоке создать нужное количество потоков, в качестве аргумента передавать им нужный кусок текста. Поток зашифрует текст и вернёт его в нужное место, после отработки сигнализирует о завершении своей работы, например, с помощью ManualResetEvent. Основной поток всё это время будет ждать, пока все созданные потоки не выставят свои ManualResetEvent, после чего из кусков соберёт полный зашифрованный текст. Как-то так.
1
|
|
|
23 / 23 / 30
Регистрация: 23.10.2012
Сообщений: 344
|
|
| 29.10.2014, 15:13 [ТС] | |
|
Cupko, Да, возможно, то что нужно. Только примеры там не очень понятны для новичка.
0
|
|
| 29.10.2014, 15:13 | |
|
Помогаю со студенческими работами здесь
4
Перевести код в Лазарус: шифр Гронсфельда Распараллелить код Распараллелить код, работающий с графами
Перевести код шифрования с Pascal на C# Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|