README.md

Проект по изучению современного С

Это небольшой проект, направленный на изучение современного программирования на С. Основная цель этого проекта - изучить и понять тонкости современного С с акцентом на многопоточность и производительность. Проект был вдохновлен поиском дубликатов файлов с помощью C на Youtube. Этот код написан с нуля и отличается ключевыми моментами просмотра:

  • Он многопоточный
  • Он использует кольцевой буфер
  • В нем используется алгоритм blake3 с оптимизацией SIMD

Обзор проекта

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

BLAKE3 - это криптографическая хэш-функция, которая быстрее, чем MD5, SHA-1, SHA-2, SHA-3 и BLAKE2.

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

Проект нацелен на повышение производительности. Один поток рекурсивно обходит данный каталог, помещая результаты в кольцевой буфер.

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

Используемые технологии

  • C11: Проект написан на C11, последнем стандарте ISO C.
  • BLAKE3: Для хэширования файлов.
  • Кольцевой буфер: Для эффективной многопоточности.
  • uthash: Для хэш-таблицы

Результаты обучения

Благодаря этому проекту вы можете рассчитывать на более глубокое понимание современного программирования на C, включая:

  • Передовые концепции C, такие как многопоточность.
  • Использование и реализация современных алгоритмов хэширования.
  • Использование и реализация структур данных, таких как кольцевые буферы.

Производительность

Надлежащий анализ производительности не проводился, но код достаточно эффективен для первого проекта:

  • Он использует все доступные ядра (16 в моем случае Ryzen 5700 на Inspiron 5515)
  • Примерно чуть менее 500 тыс. файлов могут быть хэшированы чуть более чем за 30 секунд.
Описание

Демонстрационный проект C / A C show case project

Конвейеры
0 успешных
0 с ошибкой