实在想不通为什么 Windows 记事本打开大文件比 VS Code 慢那么多

2020-07-23 13:24:32 +08:00
 szzhiyang

同一份 100MB 的纯文本文件,VS Code 只用一两秒就打开完成了,记事本卡了一分多钟都还不见一个字。


VS Code 是用以慢著称的 Electron 框架写的,记事本是用以快著称的 C++ 写的,可为什么后者打开文件反而更慢并且还慢那么多呢?


7320 次点击
所在节点    程序员
40 条回复
wangkun025
2020-07-23 13:30:05 +08:00
占用资源多,干的事儿多。
LokiSharp
2020-07-23 13:40:04 +08:00
记事本是整个 100M 读到内存并渲染的,VSCode 是一块一块逐步读取渲染。类似的可以了解一下低速网络环境下浏览器如何加载大型 HTML 页面
Mohanson
2020-07-23 13:56:53 +08:00
vscode 有官方文章介绍大文件这件事,可以搜搜看看,逐步渲染和整体渲染的区别,楼主如果是前端的话这些知识还是要掌握的,引战没意思。
lower
2020-07-23 14:00:25 +08:00
钓鱼?
aoeui
2020-07-23 14:03:31 +08:00
记事本只能打开 64 KB 的内容
xJogger
2020-07-23 14:08:53 +08:00
自行车骑上就能走,最多去附近买个菜。
汽车要发动一会才能走,想跑个几十公里没啥问题。
开汽车去附近买菜大家觉得没必要,但用自行车起个几十公里,一般人也会觉得没啥必要。
yyfearth
2020-07-23 14:19:03 +08:00
这个读取超大文件本就好什么框架或者什么语言编写没关系
必须要做到按需读取部分文件和渲染来做到

记事本要完全读取文件 并且完全渲染才会显示出来 自然要慢
VSCode 和专业一些的编辑器会支持这种大文件读取 自然就不会太卡
edk24
2020-07-23 14:26:55 +08:00
记事本完整读取文件到内存

编辑器有可能是用 fopen() fread() fclose() 用偏移来读取, 不用完整读取到内存中, 只需要按偏移截取部分

这个是我的理解, 嘿嘿
koharu
2020-07-23 14:30:34 +08:00
你可以对比两个软件打开文件后拖动进度条的感受
reus
2020-07-23 15:41:30 +08:00
想不通就多学习,肤浅
luckyrayyy
2020-07-23 15:43:03 +08:00
记事本本来就不是干这个用的....c++写的就代表性能碾压一切了?
maokabc
2020-07-23 15:48:51 +08:00
不是文件读取问题,读取文件那点时间差异可以忽略不计,主要在文字排版和渲染。vscode 用的数据结构是改进过的 piece table,也是一次性完全读取文件,不是编辑几 g 那种大文件没必要部分加载。
Luoboaibaicai
2020-07-23 15:56:45 +08:00
可能是该换电脑了吧
will0404
2020-07-23 16:00:36 +08:00
我也记得 vscode 是改进的渲染部分,读文件仍然是一次 io 全部读取的。
okjb
2020-07-23 16:06:51 +08:00
回楼上🐶
这件事大家懂得都懂,不懂得,说了你也不明白,不如不说。你们也别来问我怎么了,利益牵扯太大,说了对你们也没什么好处,当不知道就行了,其余的我只能说这里面水很深,牵扯到很多大人物。详细资料你们自己找是很难找的,网上大部分已经删除干净了,所以我只能说懂得都懂,不懂得也没办法。
stevenhawking
2020-07-23 16:11:29 +08:00
vscode 是测算你一屏幕会阅读到哪一段落,只读取和渲染那一段落;
notepad 是哪怕是个蓝光 avi 也要全部读取
jrtzxh020
2020-07-23 16:15:56 +08:00
@okjb 发傻了?自言自语 !
gainsurier
2020-07-23 16:27:43 +08:00
最快的还是 emeditor,十几 G 的文件轻松读取。
wangkun025
2020-07-23 16:30:45 +08:00
@gainsurier 比 sublime 厉害吗?
wee911
2020-07-23 16:37:42 +08:00
vscode 很多都是 c++写的,就视图用了下 electron

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/692484

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX