记一次node的fs模块读取json文件速度测试
使用环境参考
Node.js v16.19.1
CPU AMD R5-6600H
内存 三星 DDR5 8Gx2
硬盘 海力士固态 512G 8000MB/s
笔记本
前情提要
事情是酱紫滴,在学习新前端框架时,想写个简单的管理后台练练手,准备后端用 express
简单写个增删改查。然后关于如何存储工单数据,在纠结了一阵用数据库 MySQL
还是 MongoDB
后,我觉得 json
一个文本数据也挺好的。
但是身为一个程序员的探索欲望 + 强迫症就上来了,这玩意响应速度可以吗?
安装 Node,新建测试 js,开搞!使用 fs 模块的 readFile
与 readFileSync
测试。
测试代码(同步):
const fs = require('fs') |
测试代码(异步):
const fs = require('fs') |
其中 data.json
是一个大数组,数组中每一项都是一条工单数据,随机几项字段,然后随机字母填充生成,一行一条:
[ |
速度测试
一切准备就绪,我开始从小 json 开始,逐渐填充数据,调用完脚本生成几十条随机数据后,我开始 ctrl-cv
复制数据。以下为测试方式,每次测试取 3 次运行时间的平均值:
结果:
data.json(大小) | fs.readFileSync(时间) | fs.readFile(时间) |
---|---|---|
1.1 kb | 0.248 ms | 1.107 ms |
2.2 kb | 0.245 ms | 1.458 ms |
6.6 kb | 0.277 ms | 1.511 ms |
19.7 kb | 0.286 ms | 1.403 ms |
26.7 kb | 0.305 ms | 1.377 ms |
131 kb | 0.407 ms | 1.694 ms |
262 kb | 0.503 ms | 1.512 ms |
789 kb | 1.021 ms | 1.993 ms |
1.85 Mb | 1.432 ms | 2.337 ms |
5.53 Mb | 4.212 ms | 5.113 ms |
11.1 Mb | 7.581 ms | 9.304 ms |
27.7 Mb | 18.731 ms | 20.225 ms |
75.8 Mb | 47.735 ms | 58.365 ms |
227 Mb | 144.845 ms | 149.117 ms |
379 Mb | 239.331 ms | 242.625 ms |
438 Mb | 271.448 ms | 299.129 ms |
607 Mb | Error | —– |
当数据达到 462 万行的时候,我随机的这种简单工单数据大约 440Mb
,读取速度约 0.3 秒。
当数据大于 512Mb
时,调用 fs.readFileSync
时报错:
最终结论
将数据以表格形式呈现,数据大小为横轴(单位 kb),时间为纵轴(单位为 ms):
两者基本呈现正比例变化,简单拟合后,我的电脑测试完,速度约为 1.51Mb/ms
做个后台管理系统,应该没问题!当然前提是服务器 CPU 不太差,且使用并发不高!!!
我是阔阔,一位喜欢研究的程序员!
个人网站:www.kuokuo666.com
2023!Day Day Up!
记一次node的fs模块读取json文件速度测试