为什么strtok()比sscanf工作得慢

时间:2013-11-10 07:16:27

标签: c regex

我正在做作业......而且我发现我的代码比同学的工作速度慢。

花一些时间看看我们的代码之间有什么不同,我发现我的加载文件比他的工作慢得多。他使用正则表达式来解析字符串

可以在这里下载buckets.in和家庭作业规范 http://cial.csie.ncku.edu.tw/course/2013_Fall_Programming/download/hw4.rar

这是我的原始代码 http://codepad.org/7atC1hY9

我的代码用我同学的输入法 http://codepad.org/jNfqr5Mc

见第94行

//Parse it with space
char *p=strtok(buffer, " ");
while(p!=NULL){
    if(*p!='\n'&&*p!='\0')
        buckets[count].data[buckets[count].N++]=atoi(p);
    p=strtok(NULL, " ");
}

VS

for(;sscanf(buffer, "%d %[1234567890 ]", &buckets[count].data[buckets[count].N], buffer)>1;buckets[count].N++);

这是我同学的代码http://codepad.org/MMI18Dlz

此外,似乎他没有做任何改进铲斗映射性能的事情,但它比我的运行速度快得多。 (也许n太小了......)

0 个答案:

没有答案