Измерение времени шаблонных функций в цикле не работает должным образом - PullRequest
0 голосов
/ 04 июня 2019

По какой-то причине все вычисленное время совпадает с первой итеративной функцией.

 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
...