DEV Community

Review Laptop
Review Laptop

Posted on • Originally published at reviewlaptop.vn

Nx vs Turborepo trên i5-1235U: Nhanh nhưng đừng để cache đánh lừa

Bản tóm tắt kỹ thuật. Bài viết gốc xuất bản tại: reviewlaptop.vn

Đang hì hục gõ lệnh build một dự án monorepo lớn, bỗng dưng quạt tản nhiệt rú lên và VS Code đơ cứng mất vài giây. Thực tế thì, hiệu năng build không chỉ phụ thuộc vào cách bạn viết code, mà còn bị giới hạn trực tiếp bởi cấu hình phần cứng. Hãy cùng mổ xẻ hiệu năng của Nx, Turborepo và PNPM Workspaces chạy trên một cấu hình văn phòng rất quen thuộc: CPU Intel Core i5-1235U, 16 GB RAM và Windows 11.

Đừng để con số cache đánh lừa: Giới hạn vật lý của i5-1235U

Intel Core i5-1235U sở hữu 10 nhân (2 nhân hiệu năng cao P-core và 8 nhân tiết kiệm điện E-core). Khi chạy cold build (lần đầu, chưa có cache) cho một dự án monorepo tầm trung, các công cụ sẽ bộc lộ rõ sự "được và mất":

  • PNPM Workspaces: Nhẹ nhàng nhất, tập trung vào liên kết dependency. Nó không ngốn RAM nhưng thời gian build phụ thuộc hoàn toàn vào tốc độ xử lý tuần tự của CPU.
  • Turborepo: Nhờ viết bằng Go, khởi động cực nhanh và tốn rất ít RAM (<50MB cho daemon).
  • Nx: Rất mạnh về phân tích graph nhưng cơ chế daemon chạy bằng Node.js có thể ngốn từ 150-200MB RAM liên tục.

Nói thẳng, nếu bạn vừa build monorepo vừa mở các tác vụ nặng khác như quay màn hình (bạn có thể tham khảo bài viết chi tiết để thấy các công cụ ghi hình trên Win 11 ngốn tài nguyên thế nào), máy sẽ dễ rơi vào trạng thái quá tải hoặc tụt pin nhanh chóng do pin của cấu hình này chỉ ở mức 50 Wh.

Với dòng chip U-series, thời gian cold build thường kéo dài từ 1 đến 2 phút đối với dự án trung bình. Tuy nhiên, khi kích hoạt local cache của Nx hoặc Turborepo, thời gian build giảm xuống chỉ còn dưới 2 giây. Nhưng đừng để con số này làm bạn chủ quan: nếu cache bị hỏng (cache miss), CPU sẽ lập tức bị đẩy lên 100% công suất.

Checklist tối ưu hóa Monorepo trên cấu hình 16 GB RAM

Để tránh việc máy bị đơ hoặc tràn RAM khi dev, bạn cần áp dụng các tùy chỉnh cấu hình thực tế dưới đây:

  1. Giới hạn số luồng (Parallelism): Mặc định các công cụ sẽ sử dụng tối đa số thread của CPU (i5-1235U có 12 threads). Điều này sẽ làm CPU quá nhiệt và throttling rất nhanh. Hãy giới hạn số luồng xử lý bằng số nhân P-core (thường là 2 hoặc tối đa 3).
    • Với Turborepo: turbo run build --concurrency=3
    • Với Nx: nx run-many -t build --maxParallel=3
  2. Cấu hình tài nguyên cho WSL2 (nếu dùng Windows 11): Tạo file .wslconfig tại thư mục User để giới hạn RAM ở mức 8 GB, tránh để WSL2 nuốt trọn 16 GB RAM của hệ thống:

    [wsl2]
    memory=8GB
    processors=4
    

Verdict: Turborepo là lựa chọn tối ưu hơn cho i5-1235U nhờ sự gọn nhẹ. Nx chỉ thực sự phát huy sức mạnh nếu bạn nâng cấp lên cấu hình có CPU dòng H và RAM tối thiểu 32 GB. Bạn có sẵn sàng đánh đổi tính năng để lấy sự mượt mà khi code hàng ngày không?

Top comments (0)