fastxlsx是基于Rust引擎的Python Excel读写库,专为极致性能而生。
核心卖点:比openpyxl快5-10倍,比xlsxwriter快3-5倍。
性能分析:为什么fastxlsx这么快?openpyxl/xlsxwriter: 纯Python实现
fastxlsx: Rust引擎 + PyO3桥接
import timeimport numpy as npfrom openpyxl import Workbook as OpenpyxlWorkbookimport xlsxwriterfrom fastxlsx import WriteOnlyWorkbook, DType# ============ 测试数据准备 ============ROWS = 1000000COLS = 10print(f"生成测试数据:{ROWS:,} 行 × {COLS} 列")data = np.random.random((ROWS, COLS))print(f"数据大小:约 {data.nbytes / 1024 / 1024:.2f} MB\n")# ============ 测试1:openpyxl ============print("=" * 60)print("测试 1: openpyxl")print("=" * 60)start_time = time.time()wb_openpyxl = OpenpyxlWorkbook()ws_openpyxl = wb_openpyxl.active# 写入表头for col in range(COLS): ws_openpyxl.cell(1, col + 1, f"列{col}")# 逐行写入数据for i in range(ROWS): for j in range(COLS): ws_openpyxl.cell(i + 2, j + 1, float(data[i, j]))wb_openpyxl.save("test_openpyxl.xlsx")elapsed_openpyxl = time.time() - start_timeprint(f" openpyxl 完成!")print(f" 耗时: {elapsed_openpyxl:.2f} 秒\n")# ============ 测试2:xlsxwriter ============print("=" * 60)print("测试 2: xlsxwriter")print("=" * 60)start_time = time.time()wb_xlsxwriter = xlsxwriter.Workbook("test_xlsxwriter.xlsx")ws_xlsxwriter = wb_xlsxwriter.add_worksheet()# 写入表头for col in range(COLS): ws_xlsxwriter.write(0, col, f"列{col}")# 逐行写入数据for i in range(ROWS): for j in range(COLS): ws_xlsxwriter.write(i + 1, j, float(data[i, j]))wb_xlsxwriter.close()elapsed_xlsxwriter = time.time() - start_timeprint(f" xlsxwriter 完成!")print(f" 耗时: {elapsed_xlsxwriter:.2f} 秒\n")# ============ 测试3:fastxlsx ============print("=" * 60)print("测试 3: fastxlsx")print("=" * 60)start_time = time.time()wb_fastxlsx = WriteOnlyWorkbook()ws_fastxlsx = wb_fastxlsx.create_sheet("Sheet1")# 写入表头ws_fastxlsx.write_row((0, 0), [f"列{col}" for col in range(COLS)], dtype=DType.Str)# 批量写入数据(一次性写入整个矩阵)ws_fastxlsx.write_matrix((1, 0), data, dtype=DType.Float)wb_fastxlsx.save("test_fastxlsx.xlsx")elapsed_fastxlsx = time.time() - start_timeprint(f" fastxlsx 完成!")print(f" 耗时: {elapsed_fastxlsx:.2f} 秒\n")# ============ 性能对比汇总 ============print("=" * 60)print(" 性能对比汇总")print("=" * 60)print(f"\n{'库名':<15} {'耗时(秒)':<12} {'相对速度':<12} {'内存占用'}")print("-" * 60)print(f"{'openpyxl':<15} {elapsed_openpyxl:>10.2f}s {1.0:>10.2f}x 高")print(f"{'xlsxwriter':<15} {elapsed_xlsxwriter:>10.2f}s {elapsed_openpyxl/elapsed_xlsxwriter:>10.2f}x 中")print(f"{'fastxlsx':<15} {elapsed_fastxlsx:>10.2f}s {elapsed_openpyxl/elapsed_fastxlsx:>10.2f}x 低")print("\n" + "=" * 60)print(" 性能冠军")print("=" * 60)print(f" fastxlsx 比 openpyxl 快 {elapsed_openpyxl/elapsed_fastxlsx:.1f} 倍")print(f" fastxlsx 比 xlsxwriter 快 {elapsed_xlsxwriter/elapsed_fastxlsx:.1f} 倍")# 清理测试文件import osfor f in ["test_openpyxl.xlsx", "test_xlsxwriter.xlsx", "test_fastxlsx.xlsx"]: if os.path.exists(f): os.remove(f) print(f" 已删除: {f}")
实测效果
适用场景完美适配(性能优先)
不适合(功能优先)
如果你的工作涉及大量Excel数据处理,fastxlsx会成为你的生产力倍增器。
立刻尝试上面的性能测试代码,亲眼见证效率飙升。
#fastxlsx #Excel #性能优化 #Python #高性能
本站是社保查询公益性网站链接,数据来自各地人力资源和社会保障局,具体内容以官网为准。
定期更新查询链接数据 苏ICP备17010502号-11