比fgets更快地读取输入线?

dre*_*lax 11 c optimization file-io stdin fgets

我正在编写一个程序,其中性能非常重要,但并不重要.目前我正在FILE*逐行阅读文本,我fgets用来获取每一行.在使用了一些性能工具之后,我发现我的应用程序运行时有20%到30%的时间在内部fgets.

有没有更快的方法来获得一行文字?我的应用程序是单线程的,无意使用多个线程.输入可以来自stdin或来自文件.提前致谢.

小智 7

你没有说你在哪个平台,但如果它是类UNIX,那么你可能想尝试read()系统调用,它不执行fgets()等人做的额外缓冲层.这可能会略微加快速度,另一方面它可能会减慢速度 - 找出答案的唯一方法就是吸吮并看到.