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

为何pl.read_ipc函数的use_pyarrow参数默认值为False?

代码运行截图

你观测到的近400倍读取耗时差,来自pl.read_ipc两套读取路径的本质差异,默认将use_pyarrow设为False的设计考量主要有三点:

  • 性能优先:默认走Polars Rust层原生实现的Arrow IPC读取器,数据读取后直接在原生内存层构造Polars列式存储结构,没有跨语言边界的FFI调用开销,也不需要做中间格式转换、额外内存拷贝,大部分场景下尤其是小文件读取,性能远高于PyArrow路径。你测到的0.00036s级别的耗时,就是原生路径低开销特性的直接体现。
  • 降低依赖负担:关闭PyArrow依赖作为默认选项,用户安装Polars时不需要强制捆绑体积较大的PyArrow包,既可以精简安装包大小,也能避免不同版本PyArrow和Polars之间的兼容性问题,降低环境配置成本。
  • 保证行为一致:Polars原生IPC读取器已经完整覆盖Arrow IPC格式的规范支持,包含压缩、字典编码、嵌套类型等全部常用特性,默认走原生路径可以保证不同操作系统、不同安装环境下的文件解析结果、读取行为完全统一,不会因为用户本地PyArrow版本差异出现解析结果不一致、部分特性不支持的问题。

开启use_pyarrow=True时的高耗时,来自路径的额外开销:整个流程需要先通过PyArrow把文件加载到PyArrow自身的内存结构,再跨语言边界把数据逐列转换为Polars兼容的内存布局,最后释放PyArrow侧的临时内存对象,多了两次全量内存遍历和拷贝操作,小文件场景下这类固定开销的占比会被极度放大,才会出现你观测到的显著性能差距。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 07:57:19