读取json文件,require和fs.readFile哪个性能更好?
需求:想监听一个json文件的变化,需要知道其变更前后的数据差异。
思路:使用chokidar
监听json文件,在add
和change
事件回调中通过require
或fs.readFile
获取到文件数据。
问题:该json文件数据较大,存放的着几百万条文件的数据,每条数据约200字节。总大小1G多。不知道能否通过require读取这么大的文件,读取效率相比fs.readFile如何。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
尝试造数据模拟跑了10+,得出下列对比数据,从统计数据上看有2个结论:
1、
require读取JSON文件
相当于fs.readFileSync + JSON.parse
,明显在这题里,require方案不用考虑2、如果只是读取文本数据,
fs.readFile
要比fs.createReadStream
快得多,但是如果要转成数据的话,反而是fs.createReadStream
快的多且稳定,数据量越大越明显。以stream的形式读文件指定位置,这样不用读取全部
1G多的json文件太大了,不应该直接读到内存.
另外, require 是会有缓存的, 如果要手动删除 require 缓存, 再重新引入, 又比较复杂..
所以还是用读取部分, 然后对比的方式比较好.
@星空 问个小点,文本转数据是读取完成再转的么