或许 rust 的编译速度过慢会是劝退我我的原因之一

佬友们好!

我算是一个正在学习 rust 的菜鸟吧,目前正在看某某时间的一些教程。

今天看到教程里的有关 bevy 的实战,准备试一试,结果有了第一次被 rust 劝退的想法。

代码不是很多:

...

fn setup_camera(mut commands: Commands) {
    commands.spawn(Camera2dBundle::default());
}

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_systems(Startup, setup_camera)
        .run();
}

在 windows 上进行编译的,按照 bevy 的文档,也进行了必要的优化:

[dependencies]
bevy = "0.14.2"

[profile.dev]
opt-level = 1

# Enable a large amount of optimization in the dev profile for dependencies.
[profile.dev.package."*"]
opt-level = 3

[target.x86_64-pc-windows-msvc]
linker = "rust-lld.exe"

具体时间没统计过,不过,作为游戏引擎,避免不了频繁的修改,编译运行,但是加了一点代码,得等很长时间才能看到结果,突然没兴趣了。

我觉得电脑配置不算低吧,处理器是 11th Gen Intel(R) Core™ i7-1165G7 @ 2.80GHz 1.69 GHz,内存是32GB,硬盘是NVMe WD Blue SN570 1TB SD, rust 相关的都在当前这个盘中。

不知道我是不是有力使错地方了还是其他原因。

想听听各位佬友关于这方面的一些建议,比如 rust 编译优化等。

18 个赞

rust是这样的,最慢的编译器,但也是最严格的

6 个赞

趁着编译摸鱼啊……

9 个赞

先苦后甜,编译完成后运行过程爽就可以了

4 个赞

不但慢,吃硬盘还贼多。
想起来之前想试试tauri,编译了忘了多久了,生成的target直接二十多GB。
electron吃用户的硬盘,tauri吃开发者的硬盘:sweat_smile:

15 个赞

windows不行啊,NTFS也是慢的

4 个赞

其实你就是不用 tauri,只导入个 tokio 都差不多要十几个g :rofl:

2 个赞

突发奇想看了看我的src-tauri/target,一个普通的小项目

17 个赞

意想不到的理由

1 个赞

这种是反复更新了依赖版本,同时也可能开启了incremental模式,就会膨胀的比较快。cargo clean一下重新生成就正常了。

3 个赞

以时间换时间 :rofl:

后现代占用量啦~w

1 个赞

大部分是重复的

bevy这种量级的就是特别慢。analyzer每次都会全量分析。编译时根据有crate级别的缓存所以还好一点,但是静态链接一大堆内容还是会很慢。

这种工作方式换cpp来其实也难顶。还是rust没有稳定的ABI导致的,不然直接用动态链接了。

rust编译确实慢

试试cranelift,体感提速30%-50%

在wsl上的编译也比在windows上的快不少(30%左右?)


况且……i7-1165G也是5年前的u了

2 个赞

这个可以优化嘛,不然M2固态经常这样写入会不会很快就G了

刚刚编译了一个东西,已经一个小时了

Github找的一个项目,编译试试看,还在等

不过也不是都慢的,还看你的优化参数,其实如果你写unsafe代码是人工干编译器的活,这样可以增加编译速度,但或许有些得不偿失

实际上,用M系列芯片的Mac编译速度还挺快的。我也不明白为什么我12900k的PC编译Rust的速度甚至还比不过Mac mini M4

怎么可能一个小时,编译Linux也要不了一个小时,你网络不好吧