Đo thời gian I
Trong các slide bài giảng, bạn đã thấy cách tải và dùng hàm time.time() để đo thời gian cần thiết cho một phép toán toán học cơ bản.
Bây giờ, bạn sẽ dùng cùng chiến lược đó để so sánh hai phương pháp khác nhau cho một bài toán tương tự: tính tổng bình phương của tất cả các số nguyên dương từ 1 đến 1 triệu (1,000,000).
Tương tự như trong video, bạn sẽ so sánh hai cách: một cách duyệt thô (brute force) và một cách dùng công thức toán học hiệu quả hơn.
Trong hàm formula, ta dùng công thức chuẩn
$$ \frac{N*(N+1)(2N+1)}{6} $$
với N = 1,000,000.
Trong hàm brute_force, ta lặp qua từng số từ 1 đến 1 triệu và cộng bình phương của chúng vào kết quả.
Bài tập này là một phần của khóa học
Viết mã hiệu quả với pandas
Hướng dẫn bài tập
- Tính kết quả của bài toán bằng hàm
formula(). - In ra thời gian cần để tính kết quả bằng hàm
formula(). - Tính kết quả của bài toán bằng hàm
brute_force(). - In ra thời gian cần để tính kết quả bằng hàm
brute_force().
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Calculate the result of the problem using formula() and print the time required
N = 1000000
fm_start_time = ____
first_method = formula(N)
print("Time using formula: {} sec".format(time.time() - fm_start_time))
# Calculate the result of the problem using brute_force() and print the time required
sm_start_time = ____
second_method = ____(N)
print("Time using the brute force: {} sec".format(time.time() - sm_start_time))