Repository navigation
比对文件过大时,前端内存溢出,有什么内存限制的方法吗? #109
Description
Activity
文件有多大呢,把高亮语言设置成 plaintext 会好点么?
10W行,语言默认应该设置的就是plaintext 吧,前端浏览器内存一直增长到17G以上,然后内存不足页面崩溃。
有点夸张了..10w行已经不是前端渲染能承受的量了吧,单是diff都要diff非常久。你要不要考虑文件过大不进行展示?
有点夸张了..10w行已经不是前端渲染能承受的量了吧,单是diff都要diff非常久。你要不要考虑文件过大不进行展示?
我现在项目需要比对json,但是当达到1000行就有轻微卡顿,到4000行的时候就有明显卡顿,这个有考虑做一个懒加载嘛
10W行,语言默认应该设置的就是plaintext 吧,前端浏览器内存一直增长到17G以上,然后内存不足页面崩溃
后面你是怎么解决的呢,我的才4000行,但是也有比较明显的卡顿性能瓶颈其实不在懒加载。这种巨大量级的对比,可以考虑 monaco editor,他们对比 10w 行都没问题 @enjoy-myLife
性能瓶颈其实不在懒加载。这种巨大量级的对比,可以考虑 monaco editor,他们对比 10w 行都没问题 @enjoy-myLife
好的好的,谢谢回复,我试下这个
性能瓶颈其实不在懒加载。这种巨大量级的对比,可以考虑 monaco editor,他们对比 10w 行都没问题 @enjoy-myLife
有专门比对大体量json差异的插件推荐嘛,monaco editor包太大了,有18.44 MB,有点得不偿失了
@enjoy-myLife
应该只是npm包大小吧,你可以试下引入后打包文件体积增加了多少目前版本已经加入分批渲染和延迟高亮,默认先处理 1000 行;同时对超长行内对比和部分超大 diff 场景增加了性能保护,数千行文件相比旧版本已有改善。10 万行级文件仍不作为本组件的支持目标,因为主要瓶颈还包括同步 diff 计算和完整结果的内存占用,不是限制 DOM 渲染数量就能彻底解决。项目会继续保持轻量只读 viewer 的边界,超大文件建议使用 Monaco 等专用方案。感谢反馈。
补充一下 v1.16.0 的实际测试结果。测试环境:Apple M4 Max、36 GB 内存、Node.js 24.15.0、Chrome 151,使用
language="plaintext"和context=3。\n\n- 10 万行、单处变化:line-by-line 约 60.2 ms / 25.9 MB JS 堆;side-by-side 约 59.2 ms / 29.8 MB。\n- 10 万行、全部变化:line-by-line 约 243.5 ms / 52.7 MB;side-by-side 约 261.4 ms / 53.9 MB。\n- 1 万行组件保持挂载并连续更新 20 次,保留内存最多增长约 0.2 MB;10 万行反复挂载/卸载 5 次,没有观察到保留内存增长。\n\n当前版本未复现旧版本中内存持续增长到 17 GB 的问题。分批渲染会先处理最多 1,000 个可见行,后续内容按需加载和高亮。10 万行数据只是压力测试,不代表对任意超大文件作支持承诺;不同内容的 diff 复杂度仍可能不同。完整性能数据已经写入中文 README。