Đường găng
Chuỗi bước quyết định tổng thời gian và cách công cụ tìm ra nó.
Đường găng (critical path) là chuỗi bước quyết định tổng thời gian. Rút ngắn một bước nằm ngoài đường găng thì tổng thời gian không đổi — đây là lý do nhiều nỗ lực cải tiến không tạo ra kết quả nào đo được.
Công cụ xác định thế nào
- Liệt kê mọi kịch bản thực thi và sắp xếp theo thời gian.
- Lấy kịch bản chậm nhất.
- Trong kịch bản đó, ở mỗi khối song song chỉ giữ lại nhánh chậm nhất — vì chỉ nhánh đó mới quyết định thời gian của khối.
branch_time = max((segment.time for segment in combo), default=0.0)
slowest = max(combo, key=lambda s: s.time) # nhánh dài nhất
merged = _Segment(
time=branch_time + tail.time, # thời gian: chỉ nhánh chậm nhất
ids=branch_ids | tail.ids, # mọi bước đã chạy
critical=slowest.critical | tail.critical, # nhưng đường găng chỉ đi qua nhánh chậm
)
Cả hai nhánh đều chạy, nên cả hai đều tính chi phí. Nhưng đường găng chỉ đi qua nhánh 40 phút. Trên giao diện, bước 20 phút giữ màu gốc còn bước 40 phút được tô viền hồng.
Rút nhánh 20 phút xuống 5 phút: tổng thời gian không đổi. Rút nhánh 40 phút xuống 25 phút: tổng thời gian giảm 15 phút.
Nhìn đường găng ở đâu
- Cả hai sơ đồ đều tô viền hồng cho bước nằm trên đường găng và tô đậm các luồng nối chúng.
- Bảng chỉ số theo bước gắn nhãn đường găng.
- Tab công thức đánh dấu kịch bản chậm nhất.
- Tắt/bật bằng công tắc Tô sáng đường găng nếu thấy rối.
Đường găng có thể đổi chỗ
Phân biệt với “bước nặng nhất”
Một bước có thể tốn rất nhiều thời gian mà vẫn không nằm trên đường găng (nó chạy song song với nhánh còn dài hơn). Ngược lại, một bước ngắn nhưng nằm trên chuỗi tuần tự chính thì luôn thuộc đường găng. Tab Đồ thị phân tích cho thấy cả hai góc nhìn cùng lúc: kích thước vòng tròn là độ nặng, viền hồng là đường găng.