การวัดเวลา I
ในสไลด์บรรยาย คุณได้เห็นวิธีโหลดและใช้ฟังก์ชัน time.time() เพื่อประเมินเวลาที่ใช้ในการดำเนินการทางคณิตศาสตร์พื้นฐาน
คราวนี้ ลองใช้กลยุทธ์เดียวกันเพื่อเปรียบเทียบสองวิธีในการแก้ปัญหาที่คล้ายกัน นั่นคือ การคำนวณผลรวมของกำลังสองของจำนวนเต็มบวกทั้งหมดตั้งแต่ 1 ถึง 1 ล้าน (1,000,000)
เช่นเดียวกับที่เห็นในวิดีโอ เราจะเปรียบเทียบสองวิธี ได้แก่ วิธีแบบ brute force และวิธีที่ใช้หลักคณิตศาสตร์ที่ซับซ้อนกว่า
ฟังก์ชัน formula ใช้สูตรมาตรฐาน
$$ \frac{N*(N+1)(2N+1)}{6} $$
โดยที่ N=1,000,000
ส่วนฟังก์ชัน brute_force จะวนลูปผ่านแต่ละตัวเลขตั้งแต่ 1 ถึง 1 ล้าน แล้วบวกสะสมเข้าสู่ผลลัพธ์
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเขียนโค้ดที่มีประสิทธิภาพด้วย pandas
คำแนะนำการฝึกหัด
- คำนวณผลลัพธ์ของปัญหาโดยใช้ฟังก์ชัน
formula() - แสดงเวลาที่ใช้ในการคำนวณผลลัพธ์ด้วยฟังก์ชัน
formula() - คำนวณผลลัพธ์ของปัญหาโดยใช้ฟังก์ชัน
brute_force() - แสดงเวลาที่ใช้ในการคำนวณผลลัพธ์ด้วยฟังก์ชัน
brute_force()
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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))