71 / 62 / 33
Регистрация: 03.09.2013
Сообщений: 306
|
|
1 | |
Выделить потоку польше памяти08.01.2014, 16:53. Показов 1355. Ответов 10
Метки нет (Все метки)
На килобайтных файлах все замечательно работает, а вот на больших ошибка System.OutOfMemoryException
в потоках CryptoStream и MemoryStream нужно работать с гигабайтами. Подскажите плиз.
0
|
08.01.2014, 16:53 | |
Ответы с готовыми решениями:
10
Как выделить произвольную область в памяти для записи Можно ли выделить для приложения больше памяти для увеличения его быстродействия Выделить в памяти 1024 ячейки по 8 байт и вывести их адреса(МИНИ менеджер памяти)) Выделить под программу максимум памяти |
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
|
|
08.01.2014, 17:22 | 2 |
На гигабайтовые файлы никакой адресной таблицы не напасешься.
Считывайте по кускам, а не целиком. Считали кусок, обработали, считали следующий. И так до конца.
2
|
71 / 62 / 33
Регистрация: 03.09.2013
Сообщений: 306
|
|
08.01.2014, 17:39 [ТС] | 3 |
У меня прога архивирует и шифрует бекапы. По типу Rar.exe, пока её через свою прогу юзаю, но хочется сделать своё, вроде мини трукрипта.
Не в курсе как порезать поток, если ещё и распаралелить то вообше круто. Подскажите плиз как это можно сделать. Как то можно силами проца ускорить AES шифрование, тоже интересует.
0
|
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
|
|
09.01.2014, 11:26 | 4 |
Driwars, тебе не нужно резать поток , а нужно считывать файл по кускам как уже сказали выше
Чтобы распараллелить нужно каждый кусок файла обрабатывать в отдельном потоке, каждый поток запускать на отдельном ядре , ибо нету смысла запускать больше 1 потока на одноядерном проце. Размер кусков надо подбирать, так чтобы твое энное количество потоков не съедало всю оперативную память Добавлено через 2 минуты Ах да еще забыл добавить , если память не изменяет 32 разрядная винда не выделяет больше 3гб памяти на приложение
0
|
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
|
|
09.01.2014, 12:28 | 6 |
Из всех режимов доступных в Aes (представленных в .Net), единственный режим который возможно поддерживает распараллеливание это режим ECB, и я бы не советовал его использовать. Можно конечно еще разбить файл на блоки и зашифровать каждый отдельно..
В относительно новых процессорах есть инструкции ускоряющие шифрование аппаратно (AES-NI) скорость равна примерно той же с которой вы копируете файл.
0
|
71 / 62 / 33
Регистрация: 03.09.2013
Сообщений: 306
|
||||||||||||||||
09.01.2014, 14:14 [ТС] | 7 | |||||||||||||||
С памятью проблем нет, программе можно вполне выделить под 3-4 гига не проблема, если это ускорит процесс.
Проблему с шифрованием решил так.
а вот с дешифровкой проблема код
П.С. На отдельном ядре надо попробовать. или вы имели в виду сделать вроде этого
TryeCrypt пишет что из моей железки можно выжать 2 гигабита AES в секунду. При экстренном бекапе можно писать и на SSD так что при однократном шифровании можно ускорится солидно.
0
|
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
|
|
09.01.2014, 14:18 | 8 |
1
|
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
|
||||||
09.01.2014, 14:33 | 9 | |||||
Я тоже как то делал (и доделал) программу шифрующую файлы.
Класс который использовал для симметричных шифров.
1
|
Master of Orion
|
|||||||||||
09.01.2014, 14:51 | 10 | ||||||||||
Anklav, а почему ручное управление, а не юзинги? Разницы офк нет, но симпатичней же..
А так очень симпатичный код. Плюсик)
0
|
Anklav
|
09.01.2014, 15:23
Выделить потоку польше памяти
#11
|
Не по теме: Psilon, я это давно писал.
1
|
09.01.2014, 15:23 | |
Как выделить определенное количество памяти? Выделить блок памяти размером 64кБайта Как выделить больше 8ГБ памяти в х64 платформе Работа программистом в Польше - предложение Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |