Детализация вывод
This commit is contained in:
parent
0a8359cfe7
commit
6abf49fc23
1 changed files with 36 additions and 3 deletions
39
source/app.d
39
source/app.d
|
@ -4,6 +4,36 @@ import std.string;
|
|||
// Статическая таблица Gear (256 случайных 64-битных чисел)
|
||||
mixin(import("gear.d"));
|
||||
|
||||
void printDetails(const ubyte[] src, const ulong fingerprint, const size_t i, const size_t mask) {
|
||||
// Отпечаток со сдвигом
|
||||
ulong fpOffset = fingerprint << 1;
|
||||
// Номер байта
|
||||
short charByte = src[i];
|
||||
// Значение gear
|
||||
ulong gearValue = gear[charByte];
|
||||
// Итоговый fingerprint
|
||||
ulong fpResult = fpOffset + gearValue;
|
||||
|
||||
writefln(
|
||||
"\tОтпечаток = %d\n" ~
|
||||
"\tОтпечаток со сдвигом (умножение на 2) = %d\n" ~
|
||||
"\tПолучение байта (0-255) согласно индексу %d из исходной строки = %d\n" ~
|
||||
"\tПолучение значения из таблицы gear согласно номеру байта = %d\n" ~
|
||||
"\tСумма отпечатка со сдвигом с полученным значением из таблицы gear = %d\n" ~
|
||||
"\tБитовое представление текущей маски = %b\n" ~
|
||||
"\tБитовое представление итогового отпечатка = %b\n" ~
|
||||
"\tРезультат наложения маски и отпечатка = %b\n",
|
||||
fingerprint,
|
||||
fpOffset,
|
||||
i, charByte,
|
||||
gearValue,
|
||||
fpResult,
|
||||
mask,
|
||||
fpResult,
|
||||
fpResult & mask
|
||||
);
|
||||
}
|
||||
|
||||
// Функция FastCDC с отладочной информацией
|
||||
ulong fastcdc(const ubyte[] src, size_t n, size_t minSize, size_t maxSize,
|
||||
size_t normalSize, ulong maskS, ulong maskL, size_t chunkNumber, bool debugEnabled)
|
||||
|
@ -61,6 +91,7 @@ ulong fastcdc(const ubyte[] src, size_t n, size_t minSize, size_t maxSize,
|
|||
// Цикл до normalSize (строгая маска)
|
||||
while (i < normalSize)
|
||||
{
|
||||
printDetails(src, fingerprint, i, maskS);
|
||||
fingerprint = (fingerprint << 1) + gear[src[i]];
|
||||
ulong masked = fingerprint & maskS;
|
||||
if (debugEnabled)
|
||||
|
@ -83,6 +114,7 @@ ulong fastcdc(const ubyte[] src, size_t n, size_t minSize, size_t maxSize,
|
|||
// Цикл после (слабая маска)
|
||||
while (i < n)
|
||||
{
|
||||
printDetails(src, fingerprint, i, maskL);
|
||||
fingerprint = (fingerprint << 1) + gear[src[i]];
|
||||
ulong masked = fingerprint & maskL;
|
||||
if (debugEnabled)
|
||||
|
@ -213,15 +245,16 @@ void main()
|
|||
{
|
||||
size_t remaining = totalLength - offset;
|
||||
// Включаем отладку только для первых двух чанков
|
||||
// debugEnabled = chunkNumber <= 2;
|
||||
debugEnabled = chunkNumber <= 2;
|
||||
size_t chunkSize = fastcdc(data[offset .. $], remaining, minSize, maxSize,
|
||||
normalSize, maskS, maskL, chunkNumber, debugEnabled);
|
||||
|
||||
// Вывод размера чанка и его содержимого
|
||||
writefln("Чанк %d: %d байт", chunkNumber, chunkSize);
|
||||
string chunkContent = cast(string) data[offset .. offset + chunkSize];
|
||||
writefln("Содержимое: %s\n", chunkContent.length > 50 ? chunkContent[0 .. 50] ~ "..."
|
||||
: chunkContent);
|
||||
// writefln("Содержимое: %s\n", chunkContent.length > 50 ? chunkContent[0 .. 50] ~ "..."
|
||||
// : chunkContent);
|
||||
writefln("Содержимое: %s\n", chunkContent);
|
||||
|
||||
offset += chunkSize;
|
||||
chunkNumber++;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue