轻灵,内省,质朴,有为

read和gets在内存读取上的区别。

+1 投票

外面看到有人测试read和gets的执行速度,我从内存方面做一个猜测。

read在执行的时候是把文本全部都读入到内存里面所以执行速度快,不过这个对内存的大小,还有所处理文件的大小就有要求了,如果太大就可能执行失败。

而gets则是一行,一行的读入,因为每次执行的时候都是读入一行到内存中,所以比直接从内存中取数据慢很多。不过这样的好处就是可以处理很大的文件,而不用担心内存卡爆。

所以,最后总结:

read读取文本速度快,但是不能读取过大的文本;gets读取文本速度慢,但是可以读取处理大的文本,具体选择可以根据内存和文件大小。

最新提问 9月 28, 2015 分类:语法命令 | 用户: 莫名晴天 (20 分)

1个回答

+1 投票
 
已采纳

gets读取的时候,操作系统层面和C库函数层面也会使用内存缓冲区,并不是每次只读取一行内容到内存中。

gets明显会增加函数调用的次数,同时也比直接read多了一个split的动作在里面。

最新回答 9月 29, 2015 用户: 风行水上 (-30 分)
采纳于 10月 13, 2015 用户:莫名晴天
爲什麼 gets 會有一個 split?
因为要按行取值,以换行符做split。^_^
...