Показать сообщение отдельно

  #91  
Старый 05.09.2025, 17:42
guidesoul
Новичок
Регистрация: 26.07.2025
Сообщений: 0
С нами: 423479

Репутация: 0
По умолчанию

Оптимизация производительности SpongeV16::absorb для больших файлов

В этом обновлении была проведена ключевая оптимизация функции SpongeV16::absorb, которая отвечает за "впитывание" данных в криптографическую губку.
Это изменение кардинально повышает скорость шифрования и расшифровки файлов большого размера.

Ранее, при обработке данных, функция последовательно удаляла каждый обработанный блок из начала внутреннего буфера (std::vector).
Такая операция (erase в начале вектора) крайне затратна, так как при каждом вызове она сдвигает все последующие данные в памяти.

Для больших файлов это создавало эффект "снежного кома", приводя к квадратичной зависимости времени выполнения от размера данных и вызывая серьезные "тормоза".

Теперь этот процесс был переработан

Вместо физического удаления блоков в цикле используется легковесный индекс, который просто указывает на начало следующего блока.
После того как все возможные полные блоки в буфере обработаны, вся использованная часть данных удаляется одним-единственным вызовом, что является гораздо более эффективной операцией.

Это изменение не затрагивает криптографическую логику — алгоритм производит абсолютно те же вычисления и генерирует идентичный результат.
Безопасность и надежность шифрования остались на прежнем высочайшем уровне, а обратная совместимость со старыми файлами полностью сохранена.

Скачать можно в облаке
disk.yandex.ru/d/pSxwq7mMhKsOwg
 
Ответить с цитированием