Дэниэл Бернштейн опубликовал новую библиотеку djbsort

Дэниэл Бeрнштeйн (Daniel J. Bernstein), извeстный экспeрт в oблaсти криптoгрaфии и сoздaния зaщищённoгo ПO, рaзрaбoтaвший тaкиe прoeкты, кaк qmail, djbdns, NaCl, Ed25519, Curve25519 и ChaCha20-Poly1305, oпубликoвaл нoвую библиoтeку djbsort с рeaлизaциeй высoкoпрoизвoдитeльнoгo aлгoритмa сoртирoвки массивов аж чисел. Библиотека демонстрирует рекордные цифры в скорости сортировки в памяти, заметно опережая в соответствии с производительности существующие аналоги. Например, djbsort возле сортировке 1024 32-разрядных знаковых аж чисел расходует 2.5 цикла CPU бери байт данных, независимо от содержимого массива, в в таком случае время как библиотека Intel IPP (Integrated Performance Primitives) с оптимизациями возьми базе инструкций AVX расходует около 32 циклов получи и распишись байт. Кроме того, библиотека djbsort изначально написана с оглядкой сверху безопасность и использование в криптографических системах, в томишко числе может применяться в основанных для применении сортировки реализациях алгоритмов шифрования, стойких к подбору возьми квантовом компьютере. В частности, djbsort обеспечивает постоянное счастливый случай сортировки независимо от обрабатываемого содержимого массива, отчего позволяет исключить применение методов анализа содержимого ровно по сторонним каналам, учитывающих разницу закачаешься времени обработки для определения характера данных. В djbsort используются не более простые арифметические инструкции без применения условного ветвления. Третьим достоинством djbsort является позволение инструментов, позволяющих верифицировать корректность выполненной сортировки во (избежание всех возможных вариантов массивов заданного размера. Инструментарий чтобы верификации включает три утилиты: unroller чтобы раскрутки программы сортировки для массивов заданного размера; minmax во (избежание преобразования раскрученной программы в набор операторов "min" и "max"; decompose пользу кого подтверждения корректности программы min-max. Ограничения текущей реализации djbsort: Наличествование оптимизаций только для CPU с поддержкой инструкций AVX2 ( оптимизации могут красоваться легко портированы для других CPU); Помога только сортировки знаковых 32-разрядных аж чисел (реализация может быть адаптирована на сортировки 16 и 64-разрядных аж, а также для чисел с плавающей запятой, любых записей фиксированного размера и указателей бери записи переменного размера с отсортированными ключами); Размер сортируемого массива ограничивается имеющимся размером памяти - размер массива следует) что-то сделать вмещаться в ОЗУ, но при желании помещение может быть адаптирована для сортировки данных бери диске с оптимизациями для минимизации обращений к диску; Присутствие сортировке используется только одно копра CPU (алгоритм может быть изменён на параллельной обработки на разных ядрах разве для распределённой сортировки на нескольких компьютерах); Близ верификации не выполняется проверка целостности данных в памяти; Катагенез верификации запускается отдельно для массивов разного размера, а натиск верификации уменьшается при увеличении размера массива. Данное приостановление не особо значимо, так не хуже кого верификация важна для применения в криптографии, а с целью криптографии используются только специфичные размеры массивов. Фонтан: http://www.opennet.ru/opennews/art.shtml?num=48952