From 037a74ed6942fe84c38f305e58d5ea3aadddbe52 Mon Sep 17 00:00:00 2001 From: Yury Kurlykov Date: Thu, 11 Jun 2020 13:22:10 +1000 Subject: [PATCH] Update 6th lab --- lab6/.execme | 17 +++++++++++++-- lab6/README.md | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 2 deletions(-) diff --git a/lab6/.execme b/lab6/.execme index fe192ee..bda614e 100755 --- a/lab6/.execme +++ b/lab6/.execme @@ -54,13 +54,26 @@ assert crc "Test string" "0x5e4c" assert crc "Try not to laugh1!%&<>z" "0x6579" assert crc "tEsTTa" "0x0763" -# Big file tests +echo "Allocating 512B file with random data..." +head -c 512 smallfile.bin +run_bench xor smallfile.bin +run_bench fletcher smallfile.bin +run_bench crc smallfile.bin +rm smallfile.bin +echo "Allocating 64KB file with random data..." +head -c 64K midfile.bin +run_bench xor midfile.bin +run_bench fletcher midfile.bin +run_bench crc midfile.bin +rm midfile.bin + +echo "Allocating 128MB file with random data..." head -c 128M bigfile.bin - run_bench xor bigfile.bin run_bench fletcher bigfile.bin run_bench crc bigfile.bin +rm bigfile.bin echo "Create & check checksum..." head -c 16385 <(yes 4) > testfile.bin diff --git a/lab6/README.md b/lab6/README.md index 3188e1f..3bcbd22 100644 --- a/lab6/README.md +++ b/lab6/README.md @@ -1,3 +1,59 @@ # Лабораторная работа №6 +Входные данные тестов находятся в файле [.execme](.execme), там же находятся и сами тесты. + ## Задание 1 + +Был реализован алгоритм вычисления контрольной суммы с использованием XOR. + +Тестовые данные были проверены онлайн-калькулятором +https://www.scadacore.com/tools/programming-calculators/online-checksum-calculator/ + +## Задание 2 + +Был реализован алгоритм вычисления контрольной суммы Флетчера. + +Тестовые данные были проверены онлайн-калькулятором +https://gchq.github.io/CyberChef/#recipe=Fletcher-16_Checksum() + +## Задание 3 + +Был реализован быстрый алгоритм вычисления контрольной суммы CRC-16-IBM (он же CRC-16). + +Тестовые данные были проверены онлайн-калькулятором +https://emn178.github.io/online-tools/crc16.html + +## Задание 4 + +Для бенчмаркинга алгоритмов в программах был реализован ключ `-b`. + +Результаты можно увидеть ниже: +```text +Allocating 512B file with random data... +XOR execution time: 0.000018s +Fletcher execution time: 0.000017s +CRC execution time: 0.000015s + +Allocating 64KB file with random data... +XOR execution time: 0.000621s +Fletcher execution time: 0.001165s +CRC execution time: 0.000962s + +Allocating 128MB file with random data... +XOR execution time: 0.876024s +Fletcher execution time: 1.921205s +CRC execution time: 1.235906s +``` + +Из этого можно сделать вывод, что наилучший из представленных алгоритм вычисления +контрольной суммы -- CRC-16. XOR-сумма имеет слишком много коллизий, а также нечувствительна +к перестановкам байтов, хотя она является наиболее быстрой. CRC-16 на больших файлах оказывается +ощутимо производительнее суммы Флетчера, хотя и требует на 256 байт больше памяти. + +## Задание 5 + +В данном задании был использован алгоритм CRC-8-Maxim/Dallas для вычисления контрольных сумм +4Кб-блоков в файле, а также их сверки. + +В тестах проверяется адекватность программ (создание контрольной суммы с последующей сверкой), +а так же поведение при повреждении файла. \ No newline at end of file