C代码优化-防止多文件打开
Optimization of C code- prevent multiple file openings
yyin = fopen("input_file.txt","r");
while ((nread = fread(buf, 1, sizeof buf, yyin)) > 0){
fwrite(buf, 1, nread, stdout);
}
fclose(yyin);
yyin = fopen("input_file.txt","r");
yyparse();
fclose(yyin);
如您所见,我多次打开同一个文件。首先,我想在 cmd/terminal 中打印输出;然后我想启动解析器。问题很明显:每个打开过程都会消耗资源,但 fread 和 fwrite 的组合似乎 "clean" 我的输入文件,因此 yyparse 没有得到任何进一步的输入并且基本上保持为空。
您知道如何在不打开 2 个文件的情况下提高性能或流畅度吗?
您可以使用 rewind() 再次 return 到文件的开头。有关详细信息,请参阅 this documentation。
yyin = fopen("input_file.txt","r");
while ((nread = fread(buf, 1, sizeof buf, yyin)) > 0){
fwrite(buf, 1, nread, stdout);
}
fclose(yyin);
yyin = fopen("input_file.txt","r");
yyparse();
fclose(yyin);
如您所见,我多次打开同一个文件。首先,我想在 cmd/terminal 中打印输出;然后我想启动解析器。问题很明显:每个打开过程都会消耗资源,但 fread 和 fwrite 的组合似乎 "clean" 我的输入文件,因此 yyparse 没有得到任何进一步的输入并且基本上保持为空。
您知道如何在不打开 2 个文件的情况下提高性能或流畅度吗?
您可以使用 rewind() 再次 return 到文件的开头。有关详细信息,请参阅 this documentation。