Убран отладочный код
This commit is contained in:
parent
6abf49fc23
commit
808cbb28bd
2 changed files with 90 additions and 189 deletions
207
source/app.d
207
source/app.d
|
@ -4,140 +4,43 @@ 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)
|
||||
ulong fastcdc(const ubyte[] src, size_t n, size_t minSize, size_t maxSize, size_t normalSize, ulong maskS, ulong maskL)
|
||||
{
|
||||
if (n <= minSize)
|
||||
{
|
||||
if (debugEnabled)
|
||||
{
|
||||
writefln("%s: Ранний возврат: остаток=%d <= минимальный размер=%d, размер чанка=%d",
|
||||
__FUNCTION__, n, minSize, n);
|
||||
}
|
||||
return n;
|
||||
}
|
||||
if (n > maxSize)
|
||||
{
|
||||
if (debugEnabled)
|
||||
{
|
||||
writefln("%s: Ограничение n до максимального размера: %d -> %d",
|
||||
__FUNCTION__, n, maxSize);
|
||||
}
|
||||
n = maxSize;
|
||||
}
|
||||
if (n < normalSize)
|
||||
{
|
||||
if (debugEnabled)
|
||||
{
|
||||
writefln("%s: Корректировка нормального размера: %d -> %d",
|
||||
__FUNCTION__, normalSize, n);
|
||||
}
|
||||
normalSize = n;
|
||||
}
|
||||
|
||||
ulong fingerprint = 0;
|
||||
ulong fp = 0;
|
||||
size_t i = 0;
|
||||
|
||||
if (debugEnabled)
|
||||
{
|
||||
writefln("%s: Начало обработки чанка %d, остаток=%d, " ~
|
||||
"минимальный размер=%d, нормальный размер=%d, максимальный размер=%d",
|
||||
__FUNCTION__, chunkNumber, n, minSize, normalSize, maxSize);
|
||||
}
|
||||
|
||||
// Инициализация fingerprint (отпечатка) для первых minSize байт (без проверки cut-point)
|
||||
// Инициализация fp для первых minSize байт (без проверки cut-point)
|
||||
while (i < minSize)
|
||||
{
|
||||
fingerprint = (fingerprint << 1) + gear[src[i]];
|
||||
if (debugEnabled)
|
||||
{
|
||||
writefln("%s: Фаза инициализации, индекс=%d, байт=%d, fingerprint=%d",
|
||||
__FUNCTION__, i, src[i], fingerprint);
|
||||
}
|
||||
fp = (fp << 1) + gear[src[i]];
|
||||
i++;
|
||||
}
|
||||
|
||||
// Цикл до normalSize (строгая маска)
|
||||
while (i < normalSize)
|
||||
{
|
||||
printDetails(src, fingerprint, i, maskS);
|
||||
fingerprint = (fingerprint << 1) + gear[src[i]];
|
||||
ulong masked = fingerprint & maskS;
|
||||
if (debugEnabled)
|
||||
fp = (fp << 1) + gear[src[i]];
|
||||
if ((fp & maskS) == 0)
|
||||
{
|
||||
writefln("%s: Фаза строгой маски, индекс=%d, байт=%d, fingerprint=%d, fingerprint & maskS=%d",
|
||||
__FUNCTION__, i, src[i], fingerprint, masked);
|
||||
}
|
||||
if (masked == 0)
|
||||
{
|
||||
if (debugEnabled)
|
||||
{
|
||||
writefln("%s: Найдена точка разбиения на индексе=%d (строгая маска), размер чанка=%d",
|
||||
__FUNCTION__, i, i);
|
||||
}
|
||||
return i;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
// Цикл после (слабая маска)
|
||||
while (i < n)
|
||||
{
|
||||
printDetails(src, fingerprint, i, maskL);
|
||||
fingerprint = (fingerprint << 1) + gear[src[i]];
|
||||
ulong masked = fingerprint & maskL;
|
||||
if (debugEnabled)
|
||||
fp = (fp << 1) + gear[src[i]];
|
||||
if ((fp & maskL) == 0)
|
||||
{
|
||||
writefln("%s: Фаза слабой маски, индекс=%d, байт=%d, fingerprint=%d, fingerprint & maskL=%d",
|
||||
__FUNCTION__, i, src[i], fingerprint, masked);
|
||||
}
|
||||
if (masked == 0)
|
||||
{
|
||||
if (debugEnabled)
|
||||
{
|
||||
writefln("%s: Найдена точка разбиения на индексе=%d (слабая маска), размер чанка=%d",
|
||||
__FUNCTION__, i, i);
|
||||
}
|
||||
return i;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
if (debugEnabled)
|
||||
{
|
||||
writefln("%s: Точка разбиения не найдена, возвращается максимальный размер=%d",
|
||||
__FUNCTION__, n);
|
||||
}
|
||||
return n; // Достигнут max
|
||||
}
|
||||
|
@ -145,78 +48,7 @@ ulong fastcdc(const ubyte[] src, size_t n, size_t minSize, size_t maxSize,
|
|||
void main()
|
||||
{
|
||||
// Текст без переносов строк, \n заменены на пробел
|
||||
string text = "Цель науки о данных — улучшить процесс принятия решений, " ~
|
||||
"основывая их на более глубоком понимании ситуации с помощью " ~
|
||||
"анализа больших наборов данных. Как область деятельности " ~
|
||||
"наука о данных включает в себя ряд принципов, методов " ~
|
||||
"постановки задач, алгоритмов и процессов для выявления " ~
|
||||
"скрытых полезных закономерностей в больших наборах данных. " ~
|
||||
"Она тесно связана с глубинным анализом данных и машинным " ~
|
||||
"обучением, но имеет более широкий охват. Сегодня наука о " ~
|
||||
"данных управляет принятием решений практически во всех " ~
|
||||
"сферах современного общества. В повседневной жизни вы " ~
|
||||
"ощущаете на себе воздействие науки о данных, когда видите " ~
|
||||
"отобранные специально для вас рекламные объявления, " ~
|
||||
"рекомендованные фильмы и книги, ссылки на предполагаемых " ~
|
||||
"друзей, отфильтрованные письма в папке со спамом, " ~
|
||||
"персональные предложения от мобильных операторов и " ~
|
||||
"страховых компаний. Она влияет на порядок переключения и " ~
|
||||
"длительность сигналов светофоров в вашем районе, на то, как " ~
|
||||
"были созданы новые лекарства, продающиеся в аптеке, и то, как " ~
|
||||
"полиция вычисляет, где может потребоваться ее присутствие. " ~
|
||||
"Рост использования науки о данных в обществе обусловлен " ~
|
||||
"появлением больших данных и социальных сетей, увеличением " ~
|
||||
"вычислительной мощности, уменьшением размеров носителей " ~
|
||||
"компьютерной памяти и разработкой более эффективных " ~
|
||||
"методов анализа и моделирования данных, таких как глубокое " ~
|
||||
"обучение. Вместе эти факторы означают, что сейчас процесс " ~
|
||||
"сбора, хранения и обработки данных стал как никогда ранее " ~
|
||||
"доступен для организаций. В то же время эти технические " ~
|
||||
"новшества и растущее применение науки о данных означают, что " ~
|
||||
"этические проблемы, связанные с использованием данных и " ~
|
||||
"личной конфиденциальностью, тоже вышли на первый план. Цель " ~
|
||||
"этой книги — познакомить с наукой о данных на уровне ее " ~
|
||||
"основных элементов и с той степенью погружения, которая " ~
|
||||
"обеспечит принципиальное понимание вопроса. " ~
|
||||
"Глава 1 очерчивает область науки о данных и дает краткую " ~
|
||||
"историю ее становления и эволюции. В ней мы также " ~
|
||||
"рассмотрим, почему наука о данных стала такой востребованной " ~
|
||||
"сегодня, и перечислим факторы, стимулирующие ее внедрение. В " ~
|
||||
"конце главы мы развенчаем несколько мифов, связанных с темой " ~
|
||||
"книги. Глава 2 вводит фундаментальные понятия, относящиеся к " ~
|
||||
"данным. В ней также описаны стандартные этапы проекта: " ~
|
||||
"понимание бизнес-целей, начальное изучение данных, " ~
|
||||
"подготовка данных, моделирование, оценка и внедрение. Глава 3 " ~
|
||||
"посвящена инфраструктуре данных и проблемам, связанным с " ~
|
||||
"большими данными и их интеграцией из нескольких источников. " ~
|
||||
"Одна из таких типичных проблем заключается в том, что данные " ~
|
||||
"в базах и хранилищах находятся на одних серверах, а " ~
|
||||
"анализируются на других. Поэтому колоссальное время тратится " ~
|
||||
"на перемещение больших наборов данных между этими " ~
|
||||
"серверами. Глава 3 начинается с описания типичной " ~
|
||||
"инфраструктуры науки о данных для организации и некоторых " ~
|
||||
"свежих решений проблемы перемещения больших наборов " ~
|
||||
"данных, а именно: метода машинного обучения в базе данных, " ~
|
||||
"использования Hadoop для хранения и обработки данных, а также " ~
|
||||
"разработки гибридных систем, в которых органично сочетаются " ~
|
||||
"традиционное программное обеспечение баз данных и решения, " ~
|
||||
"подобные Hadoop. Глава завершается описанием проблем, " ~
|
||||
"связанных с интеграцией данных в единое представление для " ~
|
||||
"последующего машинного обучения. Глава 4 знакомит читателя с " ~
|
||||
"машинным обучением и объясняет некоторые из наиболее " ~
|
||||
"популярных алгоритмов и моделей, включая нейронные сети, " ~
|
||||
"глубокое обучение и деревья решений. В главе 5 основное " ~
|
||||
"внимание уделяется использованию опыта в области машинного " ~
|
||||
"обучения для решения реальных задач, приводятся примеры " ~
|
||||
"анализа стандартных бизнес-проблем и того, как они могут быть " ~
|
||||
"решены с помощью машинного обучения. В главе 6 " ~
|
||||
"рассматриваются этические вопросы науки о данных, последние " ~
|
||||
"разработки в области регулирования и некоторые из новых " ~
|
||||
"вычислительных методов защиты конфиденциальности в " ~
|
||||
"процессе обработки данных. Наконец, в главе 7 описаны сферы, " ~
|
||||
"на которые наука о данных окажет наибольшее влияние в " ~
|
||||
"ближайшем будущем, изложены принципы, позволяющие " ~
|
||||
"определить, будет ли данный конкретный проект успешным.";
|
||||
mixin(import("text.d"));
|
||||
|
||||
// Конвертация в ubyte[] (UTF-8)
|
||||
ubyte[] data = cast(ubyte[]) text;
|
||||
|
@ -232,30 +64,27 @@ void main()
|
|||
// ulong maskS = (1UL << 8) - 1; // 8 бит: 0b11111111
|
||||
// ulong maskL = (1UL << 4) - 1; // 4 бита: 0b1111
|
||||
|
||||
ulong maskS = 0b1111_1111;
|
||||
// writefln("1UL: %u\n1UL << 8: %u\n(1UL << 8) - 1: %u", 1UL, 1UL << 8, maskS);
|
||||
// writefln("1UL: %u\n1UL << 4: %u\n(1UL << 4) - 1: %u", 1UL, 1UL << 4, maskL);
|
||||
// writeln();
|
||||
|
||||
ulong maskS = 0b11111111;
|
||||
ulong maskL = 0b1111;
|
||||
|
||||
// Разбиение на чанки
|
||||
size_t offset = 0;
|
||||
size_t chunkNumber = 1;
|
||||
// Включаем отладку
|
||||
bool debugEnabled = true;
|
||||
|
||||
writeln("Размеры и содержимое чанков:");
|
||||
while (offset < totalLength)
|
||||
{
|
||||
size_t remaining = totalLength - offset;
|
||||
// Включаем отладку только для первых двух чанков
|
||||
debugEnabled = chunkNumber <= 2;
|
||||
size_t chunkSize = fastcdc(data[offset .. $], remaining, minSize, maxSize,
|
||||
normalSize, maskS, maskL, chunkNumber, debugEnabled);
|
||||
|
||||
size_t chunkSize = fastcdc(data[offset .. $], remaining, minSize, maxSize, normalSize, maskS, maskL);
|
||||
// Вывод размера чанка и его содержимого
|
||||
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);
|
||||
|
||||
// writefln("Содержимое: %s\n", chunkContent);
|
||||
writefln("Содержимое: %s\n", chunkContent.length > 50 ? chunkContent[0 .. 50] ~ "..." : chunkContent);
|
||||
offset += chunkSize;
|
||||
chunkNumber++;
|
||||
}
|
||||
|
|
72
source/text.d
Normal file
72
source/text.d
Normal file
|
@ -0,0 +1,72 @@
|
|||
string text = "Цель науки о данных — улучшить процесс принятия решений, " ~
|
||||
"основывая их на более глубоком понимании ситуации с помощью " ~
|
||||
"анализа больших наборов данных. Как область деятельности " ~
|
||||
"наука о данных включает в себя ряд принципов, методов " ~
|
||||
"постановки задач, алгоритмов и процессов для выявления " ~
|
||||
"скрытых полезных закономерностей в больших наборах данных. " ~
|
||||
"Она тесно связана с глубинным анализом данных и машинным " ~
|
||||
"обучением, но имеет более широкий охват. Сегодня наука о " ~
|
||||
"данных управляет принятием решений практически во всех " ~
|
||||
"сферах современного общества. В повседневной жизни вы " ~
|
||||
"ощущаете на себе воздействие науки о данных, когда видите " ~
|
||||
"отобранные специально для вас рекламные объявления, " ~
|
||||
"рекомендованные фильмы и книги, ссылки на предполагаемых " ~
|
||||
"друзей, отфильтрованные письма в папке со спамом, " ~
|
||||
"персональные предложения от мобильных операторов и " ~
|
||||
"страховых компаний. Она влияет на порядок переключения и " ~
|
||||
"длительность сигналов светофоров в вашем районе, на то, как " ~
|
||||
"были созданы новые лекарства, продающиеся в аптеке, и то, как " ~
|
||||
"полиция вычисляет, где может потребоваться ее присутствие. " ~
|
||||
"Рост использования науки о данных в обществе обусловлен " ~
|
||||
"появлением больших данных и социальных сетей, увеличением " ~
|
||||
"вычислительной мощности, уменьшением размеров носителей " ~
|
||||
"компьютерной памяти и разработкой более эффективных " ~
|
||||
"методов анализа и моделирования данных, таких как глубокое " ~
|
||||
"обучение. Вместе эти факторы означают, что сейчас процесс " ~
|
||||
"сбора, хранения и обработки данных стал как никогда ранее " ~
|
||||
"доступен для организаций. В то же время эти технические " ~
|
||||
"новшества и растущее применение науки о данных означают, что " ~
|
||||
"этические проблемы, связанные с использованием данных и " ~
|
||||
"личной конфиденциальностью, тоже вышли на первый план. Цель " ~
|
||||
"этой книги — познакомить с наукой о данных на уровне ее " ~
|
||||
"основных элементов и с той степенью погружения, которая " ~
|
||||
"обеспечит принципиальное понимание вопроса. " ~
|
||||
"Глава 1 очерчивает область науки о данных и дает краткую " ~
|
||||
"историю ее становления и эволюции. В ней мы также " ~
|
||||
"рассмотрим, почему наука о данных стала такой востребованной " ~
|
||||
"сегодня, и перечислим факторы, стимулирующие ее внедрение. В " ~
|
||||
"конце главы мы развенчаем несколько мифов, связанных с темой " ~
|
||||
"книги. Глава 2 вводит фундаментальные понятия, относящиеся к " ~
|
||||
"данным. В ней также описаны стандартные этапы проекта: " ~
|
||||
"понимание бизнес-целей, начальное изучение данных, " ~
|
||||
"подготовка данных, моделирование, оценка и внедрение. Глава 3 " ~
|
||||
"посвящена инфраструктуре данных и проблемам, связанным с " ~
|
||||
"большими данными и их интеграцией из нескольких источников. " ~
|
||||
"Одна из таких типичных проблем заключается в том, что данные " ~
|
||||
"в базах и хранилищах находятся на одних серверах, а " ~
|
||||
"анализируются на других. Поэтому колоссальное время тратится " ~
|
||||
"на перемещение больших наборов данных между этими " ~
|
||||
"серверами. Глава 3 начинается с описания типичной " ~
|
||||
"инфраструктуры науки о данных для организации и некоторых " ~
|
||||
"свежих решений проблемы перемещения больших наборов " ~
|
||||
"данных, а именно: метода машинного обучения в базе данных, " ~
|
||||
"использования Hadoop для хранения и обработки данных, а также " ~
|
||||
"разработки гибридных систем, в которых органично сочетаются " ~
|
||||
"традиционное программное обеспечение баз данных и решения, " ~
|
||||
"подобные Hadoop. Глава завершается описанием проблем, " ~
|
||||
"связанных с интеграцией данных в единое представление для " ~
|
||||
"последующего машинного обучения. Глава 4 знакомит читателя с " ~
|
||||
"машинным обучением и объясняет некоторые из наиболее " ~
|
||||
"популярных алгоритмов и моделей, включая нейронные сети, " ~
|
||||
"глубокое обучение и деревья решений. В главе 5 основное " ~
|
||||
"внимание уделяется использованию опыта в области машинного " ~
|
||||
"обучения для решения реальных задач, приводятся примеры " ~
|
||||
"анализа стандартных бизнес-проблем и того, как они могут быть " ~
|
||||
"решены с помощью машинного обучения. В главе 6 " ~
|
||||
"рассматриваются этические вопросы науки о данных, последние " ~
|
||||
"разработки в области регулирования и некоторые из новых " ~
|
||||
"вычислительных методов защиты конфиденциальности в " ~
|
||||
"процессе обработки данных. Наконец, в главе 7 описаны сферы, " ~
|
||||
"на которые наука о данных окажет наибольшее влияние в " ~
|
||||
"ближайшем будущем, изложены принципы, позволяющие " ~
|
||||
"определить, будет ли данный конкретный проект успешным.";
|
Loading…
Add table
Add a link
Reference in a new issue