模式匹配函数的时间测量无法正常工作

Time measurement of pattern matching functions not working properly

本文关键字:常工作 工作 函数 时间 测量 模式匹配      更新时间:2023-10-16

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

 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] = '';
        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 为 9,周日为 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

molbdnilo:

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

火云:

@molbdnilo 就是这样...