循环中模式功能的时间测量无法正常工作

时间:2019-06-04 15:08:26

标签: c++ pattern-matching buffer

由于某种原因,所有计算的时间都与迭代的第一个函数相同。

 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;
         }

如果我分别计算BM的时间5,KMP和周日的时间8。

所以我上面代码的输出是这样的:

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个file_并将字符串复制到每个字符串中。

示例通缉输出:

5.34
9.43
8.22

1 个答案:

答案 0 :(得分:0)

molbdnilo:

if(int i = 0)与if(0)相同。你的意思是(i == 0)。

火云:

@molbdnilo就是这样...