По какой-то причине все вычисленное время совпадает с первой итеративной функцией.
for (int i=0;i<3;i++){
ofstream os1("alphabet_1.txt"); //I am overwriting existing file
os1<<txt; //txt is randomly generated string from other function
file_1 = fopen("alphabet_1.txt", "a+");
StartCounter();
while (!feof(file_1)) //reading file with buffer
{
const size_t nchars = fread(buffer, 1, sizeof(buffer)-1, file_1);
buffer[nchars] = '\0';
if (int i=0) BM(buffer, pat);
if (int i=1) KMP(buffer, pat_a);
if (int i=2) SUNDAY(buffer, pat_a);
}
time[i]=GetCounter();
cout<<time[i]<<endl;
}
Если я рассчитываю время отдельно, его 5 для BM, 8 для KMP и Воскресенье.
Итак, мой вывод из приведенного выше кода выглядит примерно так:
5.42
5.30
5.28
Если я изменю это так
if (int i=1) BM(buffer, pat);
if (int i=0) KMP(buffer, pat_a);
if (int i=2) SUNDAY(buffer, pat_a);
вывод будет:
8.41
8.54
8.63
(так что теперь все значения примерно соответствуют скорости KMP)
Я делаю это так, потому что я хочу, чтобы они работали с одинаковой строкой символов, в противном случае мне нужно создать 3 файла_ и скопировать строку в каждую из них.
Пример требуемого вывода:
5.34
9.43
8.22