自动类型获取需要某种垃圾收集/清理机制,至少对于旧版本的TypeScript是这样吗?

hfwmuf9z  于 4个月前  发布在  TypeScript
关注(0)|答案(4)|浏览(91)

建议:
自动获取必要的TypeScript类型。这很好!问题是,在Typescript升级的几年过程中,我的AppData/Local/Microsoft/Typescript文件夹已经充满了成千上万个文件。这实际上是一个巨大的问题,原因如下:

  • NTFS目前没有“清理”旧MFT条目的方法。如果文件夹增长到包含一百万左右的文件,你的整个系统将永久变慢!
  • 对于我来说,Windows 10似乎喜欢在登录之前遍历整个AppData树,甚至不并行进行(MSFT,请雇佣@ned14,哈哈),所以有数十万个文件要遍历意味着我必须等待更长的时间才能使用我的机器!如果你有一个膨胀的MFT,情况会变得更糟。

🔍 搜索词

自动获取类型

✅ 可实现性检查清单

我的建议符合以下准则:

  • 这不会对现有的TypeScript/JavaScript代码造成破坏性的更改
  • 这不会改变现有JavaScript代码的运行时行为
  • 这可以在不根据表达式的类型发出不同的JS的情况下实现
  • 这不是一个运行时特性(例如库功能、JavaScript输出非ECMAScript语法、JS的新语法糖等)
  • 这个特性将与TypeScript's Design Goals的其他部分保持一致。

⭐ 建议

清理旧版本typescript留下的剩余类型声明或未使用的声明。You could even use AgeStore!

📃 激励示例

从开发机器中删除数十万个文件!来吧,这不是很好吗?

💻 用例

当前的方法似乎是让它们永远积累下去。我刚刚发现这一点,当我运行altWinDirStat(我的旧项目,也是为什么我的MFT是3.5GB的原因...相信我,一个机械硬盘上的3.5GB MFT对于所有事情都非常缓慢),并试图解决登录缓慢的问题时。我已经删除了几个旧的TS文件夹,希望在不破坏任何东西的情况下改善情况。我在提交这个bug之前甚至没有检查是否破坏了任何东西。

nqwrtyyt

nqwrtyyt1#

@ariccio MSFT 没有必要雇佣我,他们已经非常好了,几乎修复了我发送给他们的所有问题,即使有时候需要几年才能完成。Win32枚举API现在非常好,比以前快了两倍。他们添加了io_uring API来减少套接字I/O延迟。他们修复了Win 10中期引入的异步文件I/O的IOCP调度错误。我真的不能责怪他们修复bug。

如果驱动器离线,MFT空间回收肯定很容易实现,但可能需要重写NTFS驱动程序使其在线工作,从我在Windows内核团队的朋友那里了解到,他们对此没有兴趣。在Windows上的替代选择非常有限,ReFS可以作为可引导驱动器使用,但Windows在上面运行速度很慢,ReFS卷还存在长期稳定性问题。最佳解决方案是停止在持久的NTFS卷中创建和删除数百万个文件-如果文件每发布一次都不改变,我只需将ISO映像挂载到NTFS连接点,Windows完全有能力做到这一点。或者回环挂载一个稀疏的NTFS文件作为NTFS连接点。这里有很多选项。

iswrvxsc

iswrvxsc2#

Wait you mean they improved FindFirstFile? When did they do that?? How'd they do that? Is that win 11 only or something? I'm super excited to hear this!!

1tu0hz3e

1tu0hz3e3#

(我创建数百万个文件的原因是为了对我之前正在开发的目录树可视化软件进行压力测试,早在我遭受到node_modules疯狂之前😏🤣)

arknldoa

arknldoa4#

等一下,你的意思是他们改进了FindFirstFile?什么时候做的?怎么做的?这是仅限于Win11吗还是什么?我非常兴奋听到这个消息!
后来,Win10的实现肯定有很大的改进。现在直接使用时,它已经达到了NT内核API性能的99%。显然仍然是单线程的,但比Win7好得多。
我无法更精确地说明,我只是在一位用户报告他们无法复制我对LLFIO目录枚举速度比Win32 API快得多的声明后才发现这一点。事实证明,微软在我报告问题后修复了他们的代码。做得好。

相关问题