Chinaunix

标题: fgetc、fgets读取同一个文件哪个效率会高点 [打印本页]

作者: 1581526111    时间: 2016-08-02 11:28
标题: fgetc、fgets读取同一个文件哪个效率会高点
请问fgetc、fgets读取同一个文件哪个效率会高点?或者直接用系统调用呢。
作者: txchxl    时间: 2016-08-04 17:36
1)如果文件每一行数据字节数很少,只有几个字节,用fgetc;反之fgets。
2)系统调用不一定比标准I/O快,系统调用会导致进程从用户态切换到内核态消耗CPU等资源,现在很多系统在用户态的标准I/O库函数有缓冲区,会预读一些数据放到内存,以尽可能减少调用系统调用的次数。

要看具体文件内容才能确定用哪个快。简单来说,如果你的文件只有4kb,而且需要全部读取出来,直接read 算了。如果你需要一行一行的数据,fgets。如果你需要一个一个字符,fgetc。如果文件很大很大,fread。就这样吧。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2