btvn.vn
Tìm kiếm Đăng nhập

Đo thời gian chạy và hiểu giới hạn phép đo

Lưu trên thiết bị này
Kĩ thuật lập trình — CS · Chọn bài khác

Hai mốc thời gian bao quanh công việc

`perf_counter()` cho một giá trị đồng hồ có độ phân giải cao; lấy mốc sau trừ mốc trước để được **khoảng thời gian đã trôi qua**, tính bằng giây. Giá trị mốc riêng lẻ không phải “số giây CPU chạy” hay giờ hiện tại. Đặt hai lệnh đo sát quanh đoạn cần đo: ```python from time import perf_counter def tong_chan(a): tong = 0 for x in a: if x % 2 == 0: tong += x return tong a = [2, 5, 8, 11] bat_dau = perf_counter() ket_qua = tong_chan(a) ket_thuc = perf_counter() print(ket_qua, ket_thuc - bat_dau) ``` Kết quả tổng là `10`; số giây phụ thuộc máy và lần chạy nên không ấn định một đáp số cố định.

Một dãy nhỏ không nói hết thuật toán

Với đầu vào rất nhỏ, thời gian đo có thể quá ngắn và dao động vì hệ điều hành, chương trình khác, phiên bản Python hoặc tình trạng máy. Khi so sánh hai cách giải, hãy dùng cùng máy, cùng dữ liệu tương ứng, lặp nhiều lần và xem xu hướng khi kích thước đầu vào tăng. Đo thực nghiệm giúp quan sát; để phân tích cách thời gian tăng theo `n`, cần đếm/ước lượng thao tác, được học ở bài tiếp theo. Không kết luận một thuật toán luôn nhanh hơn chỉ từ một lượt đo trên dãy mười số.

Bài luyện

Để đo khoảng thời gian chạy của hàm `f()`, biểu thức nào phù hợp?
Chọn một đáp án

Bài luyện

Đo cùng một hàm trên cùng dãy hai lần được hai số giây khác nhau rất nhỏ. Cách hiểu nào đúng?
Chọn một đáp án

Bài luyện

Trong ví dụ `tong_chan([2, 5, 8, 11])`, kết quả tổng nào có thể dự đoán chắc chắn?
Chọn một đáp án

Đang học