readfile()函数可以读取整个文件内容,为什么还需要fread()函数?

readfile()函数可以读取整个文件内容,为什么还需要fread()函数?,第1张

fread() 函数用来从指定文件中读取块数据。所谓块数据,也就是若干个字节的数据。

有些时候文件非常大,一者岁次性读取会导致大量内存被占用。这时候一次性加载凳嫌型文件内容肯定不合适,这时候就需要一段一段的读取文件。fread() 就是这种情况枣猜下使用的。

测试文件使用的文件大小为 1.35GB 的日志文本文件,使用下面两种方式来读取。

Go 标准库中包含了读写的缓冲库,直接使滚消用即可:

输出结果为:

Go 标准库中包括了 io 读写的相渗塌关工具包,大喊知直接开箱即用:

输出结果为:

结果对比

测试发现, ioutil.ReadFile 比 bufio 读写还要快。

进一步说,之所以同步是 Node.js 所遵循的 CommonJS 的模块规范要求的。

在当年,CommonJS 社区对此就有很多争议,导致了坚持异步的 AMD 从 CommonJS 中分裂出来。

CommonJS

模块是同步加载和同步执行,AMD 模块是异步加载和异步执行,CMD(Sea.js)模块是异步加载和同步执行。ES6

的模块体系最后选择的是异步加载和同步执行。也就是 Sea.js 的行为是最接近 ES6 模块的。不过 Sea.js

这样做是搏丛需要付出代价的——需要扫描代码提取依赖,所以它不像 CommonJS/AMD 是纯运行时的模块系统。

注意启银拦 Sea.js 是

2010年之后开发的,提出 CMD 更晚。Node.js 当年(2009年)只有 CommonJS 和 AMD 两个选择。就算当时已经有

CMD 的等价提案,从性能角度出发,Node.js 不太可能选择需要静态分析开销的 类 CMD 方案。考悄胡虑到 Node.js

的模块是来自于本地文件系统,最后 Node.js 选择了看上去更简单的 CommonJS 模块规范,直到今天。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12191617.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存