随随便便写几行代码,拉几个依赖一编译,分分钟两三 G 没了。
大项目更是恐怖,substrate 编译后 42G ,cargo clean 后 42 兆。
家目录下的 .cargo 和 .rustup 用一段时间也能分别占用十多个 G ,
500G 硬盘很容易就不够用了,看来以后再买电脑得 1T 起步了。
1 novolunt 2022-10-21 14:13:07 +08:00 golang ,npm ,pip 也有这个问题吧,确实多。 反正这些我都会跑,然后就不够了 |
2 Alias4ck 2022-10-21 14:22:48 +08:00 你说的随随便便是写一个 hello world 还是写一个 application |
![]() | 3 PureWhiteWu 2022-10-21 14:24:43 +08:00 ![]() 写 Rust ,现在电脑配置是 2T SSD |
![]() | 4 f6x 2022-10-21 14:27:06 +08:00 ![]() 空间换时间, 空间换效率. 你换不换? 我换. |
5 7zlid 2022-10-21 14:27:53 +08:00 via Android 利好傲腾 可惜傲腾已经入土了 |
6 xinhaiw 2022-10-21 14:34:52 +08:00 4tb m1 |
![]() | 7 Mohanson 2022-10-21 14:35:54 +08:00 Rust 稍大些的项目 cargo build 一下几十 G 洒洒水 |
![]() | 8 liyang5945 2022-10-21 14:41:32 +08:00 ![]() |
![]() | 9 cmos 2022-10-21 14:56:44 +08:00 ![]() |
![]() | 10 agagega 2022-10-21 15:02:57 +08:00 为什么会这么大?还是说原生编译语言都这样,C++项目的中间文件也不小的。当然 Rust 有时候确实离谱 |
![]() | 11 imzcg2 2022-10-21 16:08:28 +08:00 cargo install cargo-cache 安装后 只能 cargo cache -a 来不时清理一下啦 |
12 gam2046 2022-10-21 16:26:08 +08:00 我觉得现代语言都有这毛病 node_modules .gradle .mvn gopath (go get) 等等 只要多编译几个项目,什么工具链都能下回来一大堆缓存 |
![]() | 13 DonkeyBenjamin 2022-10-21 16:29:53 +08:00 如果这能让你不去学 rust ,我是赞同的 |
14 aloxaf 2022-10-21 16:55:48 +08:00 ![]() 统一 target 目录 + 定时清理 + btrfs 透明压缩,可以为你省不少空间和时间 |
![]() | 15 ihciah 2022-10-21 16:58:50 +08:00 大项目关 debug info 能省一点 |
![]() | 17 yyfearth 2022-10-21 17:16:12 +08:00 @7c00 不够 因为透明压缩是压缩每个文件 并不会去重 或者固实压缩 对于巨量的小文件 对磁盘占用贡献不大 文件小文件太小 就算压缩后大小减半 还是会占用整块的磁盘空间 其实应该把这些放到一个统一的 cache/image fs 里面 里面默认去重压缩 而且对小文件要有优化才能解决这个问题 另外有些(比如 yarn2 )支持不解压 tgz 文件 直接用虚拟 FS 直接 on the fly 读取 tgz 里面的文件 这样就会好很多 但是会慢 兼容性也会出问题 |
![]() | 18 ZeroDu 2022-10-21 17:55:08 +08:00 java 这边 maven 还好;库都是公用的;开发体验上虽然不占硬盘,但是占内存 |
19 7c00 2022-10-21 17:58:51 +08:00 @yyfearth 但这里的 rust 编译产物并不是 nodejs 那种零碎的小文件,在我这里,透明压缩效果非常显著,du 109G 但 df 只有 53G ,不过我这里不做 rust 开发而是做 web 和 android 。 |
![]() | 20 FightPig 2022-10-21 18:01:43 +08:00 我电脑里 node_modules 占的最多,上回清理了几十 g 出来 ,主要还都是些小文件,现在改用 pnpm 好些了 |
![]() | 21 adminone 2022-10-21 18:08:18 +08:00 substrate 你 build 时没看快上千个包嘛 |
22 7c00 2022-10-21 18:19:40 +08:00 @ZeroDu java web 可能还好,android 开发不容乐观,我这里 ~/.gradle 8.6G ,还没多少个项目,而且很多时候初始化项目前我刻意改过 gradle-wrapper.properties ,不然基本上每个项目都用不同版本的 gradle ,每个几百 MB ,多跑几个 demo 又用掉几个 G |
![]() | 23 darkengine 2022-10-21 18:22:59 +08:00 Xcode 笑而不语 |
24 zhuweiyou 2022-10-21 18:28:53 +08:00 4 楼说的对 |
25 MrKrabs 2022-10-21 18:38:54 +08:00 ssd+雷电硬盘盒没多少钱 |
![]() | 26 knowckx 2022-10-21 18:51:37 +08:00 假如依赖包先后发布 v1.1 v1.2 v1.3 我们更新依赖升级版本到 v1.3,但是之前本地留下的 v1.1 和 v1.2 的包内容并不会被清理掉 |
27 pinylin 2022-10-21 19:16:25 +08:00 第三次 推荐 kondo |
29 haolongsun 2022-10-21 20:34:27 +08:00 就这? npm 表示小意思 |
![]() | 30 israinbow 2022-10-21 20:42:26 +08:00 via Android 最近用 tauri 做软件,体验 nodejs + rust 之一个页面两个按钮的但页面应用,依赖 8 个 Gb 。 |
![]() | 31 ClericPy 2022-10-21 21:04:10 +08:00 看到前面提到都这样, 想起 Windows 默认把各路缓存放 user 目录里真特娘烦死, 备份个 C 盘有 20 多 GB 是各路包管理器和 linter 缓存, 清都清不过来, chrome 也乱七八糟往里扔, 真当 user 目录是垃圾桶了 |
![]() | 33 ClericPy 2022-10-21 21:12:40 +08:00 @u823tg 我意思是如果都放一个特定前缀的也行, 实在是到处乱放, mypy 的 cache 清的我手都软了, 如果各类软件协商都放 user 下面的 .cache 之类的目录, 我备份时候直接跳过去了... |
![]() | 34 yuekcc 2022-10-21 21:15:05 +08:00 ![]() |
36 Jtyczc 2022-10-21 22:42:11 +08:00 这么恐怖的吗 |
38 oksbsb 2022-10-22 01:41:21 +08:00 内存盘 + cargo config 统一配置 target 目录。 |
![]() | 40 Nugine0 2022-10-22 10:26:54 +08:00 via Android rust 不会自动清除无用的编译产物,要定期删掉 target 。 一些编译设置(高等级优化,增量编译,lto 等)会保存额外的中间信息。 debug 和 release 会产生两遍编译产物,有的 c/c++绑定会下载两遍预编译文件,没事可以删删 target/debug 。 交叉编译时对每个目标平台分别编译,有多少个就乘几倍…… 有工具(sccache)可以跨工作区复用编译产物。上面有人说的透明压缩也能缓解。 rust 默认全部静态链接,手动设成动态链接可以减少中间产物体积,不过既麻烦又对泛型没用。 rust 的包管理和 nodejs 一样鼓励复用,导致动不动上百个间接依赖,也是膨胀得很厉害。 |
![]() | 41 vite 2022-10-22 11:13:32 +08:00 观望, 这么看 rust 是个超越 npm 的黑洞? |
![]() | 42 cmdOptionKana 2022-10-22 11:48:24 +08:00 Go 在性能与资源消耗方面真的平衡得很好,工具链给人的感觉很轻,没有笨重的感觉,编译速度如闪电。 |
![]() | 43 chuanqirenwu 2022-10-22 12:16:27 +08:00 rust-analyzer 占内存也是飞起。 |
![]() | 44 12101111 2022-10-22 15:04:19 +08:00 设置 CARGO_TARGET_DIR |
45 junkun 2022-10-22 16:33:29 +08:00 @agagega 就是中间文件。但是 rust 比 C++ 会更严重一点,因为 rust 大多数依赖都是源码分发,所以依赖都要编译,产生中间文件。好处是不会像 C++ 老是有链接、符号错误。 |
46 acctv2 2022-10-23 09:06:22 +08:00 Modern 语言要用 Modern 硬件编程( |
47 kice 2022-10-23 12:18:22 +08:00 via Android 我感觉这个地球上的包管理软件都是以只编译 /部署一个项目到一台机器为准。 杂七杂八的东西堆一起几百 G 就没了。 pip 相对来说好一些,只是 cudnn 占地方之外。 还是不要包管理的好,麻烦是麻烦了点,但是省钱。 |
48 k1263 2022-11-17 16:17:35 +08:00 大佬在研究 substrate 嘛?这个框架前景怎么样?我看 OneBlock 最近在开 substrate 训练营,99 很便宜,就是不知道靠谱不靠谱,怕浪费时间。 |
49 allenwalker233 2024-07-07 15:17:36 +08:00 @pinylin 你就是超人! |