由于某种原因,所有计算的时间都与迭代的第一个函数相同。
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
答案 0 :(得分:0)
molbdnilo:
if(int i = 0)与if(0)相同。你的意思是(i == 0)。
火云:
@molbdnilo就是这样...