You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

依赖Polars的小型Rust代码编译耗时过长,求排查原因

本地依赖Polars的Rust项目编译耗时过长的排查

我在Windows的WSL环境下用VSCode和rust-analyzer开发一个仅含main.rs的小型Rust项目,依赖Polars库,但每次微小修改后编译耗时长达5-7分钟。

我的main.rs内容:

use polars::prelude::*;

fn main() {
    println!("Hello, world!");
    let s: Series = Series::new("employees", &vec!["Mahmoud", "Barak", "Ferris"]);
    println!("{:?}", s.reverse());
}

Cargo.toml中Polars的依赖配置:

[package]
name = "barak_test"
version.workspace = true
authors.workspace = true
edition.workspace = true
homepage.workspace = true
repository.workspace = true
license.workspace = true


[dependencies]
polars = { path = "../../crates/polars", features = ["lazy", "csv", "ipc"] }

已关闭rust-analyzer.checkOnSave,编译日志显示仅我的项目被重新编译,但耗时依旧很长:

warning: unused import: `coerce::*`
  --> crates/polars-plan/src/dsl/functions/mod.rs:19:9
   |
19 | pub use coerce::*;
   |         ^^^^^^^^^
   |
   = note: `#[warn(unused_imports)]` on by default

warning: unused import: `index::*`
  --> crates/polars-plan/src/dsl/functions/mod.rs:24:9
   |
24 | pub use index::*;
   |         ^^^^^^^^

warning: unused variable: `expr_arena`
   --> crates/polars-plan/src/logical_plan/optimizer/predicate_pushdown/utils.rs:151:5
    |
151 |     expr_arena: &Arena<AExpr>,
    |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expr_arena`
    |
    = note: `#[warn(unused_variables)]` on by default

warning: `polars-plan` (lib) generated 3 warnings (run `cargo fix --lib -p polars-plan` to apply 3 suggestions)
   Compiling barak_test v0.35.4 (/mnt/d/PycharmProjects/polars/examples/barak_test)
    Finished dev [unoptimized + debuginfo] target(s) in 7m 21s

补充:使用cargo build --timings仅显示总时间,生成的图表为空。


可能的原因分析

  • WSL文件系统性能瓶颈:项目放在WSL挂载的Windows磁盘(/mnt/d/)上,WSL对NTFS等Windows文件系统的文件访问性能远低于Linux原生文件系统。编译过程中频繁读写大量中间文件(如依赖缓存、编译输出),慢IO会大幅拖长整体耗时。

  • 本地Polars依赖的缓存校验开销:由于使用本地路径依赖Polars工作区,Cargo每次编译都会检查Polars所有子crate的状态,哪怕这些子crate没有变更,也会触发依赖关系重新解析、缓存有效性校验等操作,额外消耗时间。

  • 后台进程资源抢占:即使关闭了checkOnSave,rust-analyzer仍可能在后台进行代码索引、类型分析等操作,占用WSL的CPU或内存资源,导致编译过程资源不足,速度变慢。可以尝试关闭VSCode后用终端直接运行cargo build验证。

  • 特性集导致链接阶段缓慢:启用的lazy、csv、ipc等特性引入了大量依赖库,即使项目代码量小,链接阶段需要处理的符号数量极多,而WSL的链接性能本身弱于原生Linux环境,这部分耗时占比可能极高。

  • Cargo工具兼容性问题:cargo build --timings图表为空,可能是WSL环境下日志输出缓冲异常,或是Cargo版本与WSL存在兼容性问题,间接反映环境存在影响编译效率的异常。


内容的提问来源于stack exchange,提问作者barak1412

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 14:43:31