cargo-chronoscope - เครื่องมือสังเกตประสิทธิภาพการบิลด์ของ Cargo (TUI + GitHub Action)
(github.com/ymw0407)เวลาของ cargo build ในโปรเจ็กต์ Rust ค่อย ๆ เพิ่มขึ้นทุกครั้งที่มี PR แต่การไล่หาว่า PR ไหนเป็นต้นเหตุทำได้ค่อนข้างยุ่งยาก เลยสร้างสิ่งนี้ขึ้นมา
cargo-chronoscope เป็น CLI ที่อ่าน JSON event stream ของ cargo (--message-format=json-render-diagnostics) แล้วบันทึกทุกการบิลด์ลงในฐานข้อมูล SQLite ภายในเครื่อง พร้อมวิเคราะห์ได้ 4 รูปแบบ
4 ซับคอมมานด์
record— บันทึกการบิลด์หนึ่งครั้งตามจริงwatch— แดชบอร์ด TUI ที่สร้างด้วย ratatui ระหว่างการบิลด์ แสดง elapsed time แยกตามคอมไพล์ที่กำลังทำงานอยู่ การจัดประเภท anomaly (ช้ากว่าปกติ/เร็วกว่าปกติ/ปกติ) และการใช้ CPU·หน่วยความจำแบบเรียลไทม์ (เดโม GIF อยู่ด้านบนสุดของ README)ls— รายการการบิลด์ล่าสุดdiff <before> <after>— เปรียบเทียบการเปลี่ยนแปลงราย crate และ critical path ระหว่างสองการบิลด์
จุดที่ต่างจาก cargo --timings
cargo --timings ที่มีมาในตัวจะแสดงไทม์ไลน์ของการบิลด์ ครั้งเดียว ส่วน cargo-chronoscope ออกแบบมาเพื่อการเปรียบเทียบ ข้ามการบิลด์ และการตรวจจับ regression โดยเฉพาะ — ใช้ค่าเฉลี่ย±2σ ของการบิลด์ในอดีตเป็น baseline แล้วจัดประเภทการบิลด์ปัจจุบันให้อัตโนมัติ
การผสานรวมกับ GitHub Action
- uses: ymw0407/cargo-chronoscope@action-v1
เพียงบรรทัดเดียวก็โพสต์คอมเมนต์แบบ sticky ที่แสดง diff ของเวลาบิลด์ในทุก PR ได้อัตโนมัติ รองรับ PR จาก fork ด้วย (รูปแบบ workflow_run)
การติดตั้ง
cargo install cargo-chronoscope
สถานะปัจจุบัน
- v0.1.7 ลงทะเบียนบน crates.io เรียบร้อยแล้ว
- อยู่ในกลุ่มเครื่องมือภายนอกตามเป้าหมาย "Cargo build analysis" อย่างเป็นทางการของ Rust สำหรับครึ่งหลังปี 2025
- GitHub: https://github.com/ymw0407/cargo-chronoscope
ยินดีรับฟีดแบ็ก/อีชชูครับ
ยังไม่มีความคิดเห็น