Data Structure & Algorithm(EP.2) — การวัดประสิทธิภาพอัลกอริทึม

KongRuksiam Studio
2 min readFeb 27, 2024

--

การวัดประสิทธิภาพอัลกอริทึม

เมื่อมีการพัฒนาโปรแกรมขึ้นมาจะต้องมีการวัดผลการทำงานของโปรแกรมว่าทำงานถูกต้องและได้ผลลัพธ์ตามที่ต้องการหรือไม่

เมื่อทำงานถูกต้องแล้ว มีประสิทธิภาพดีหรือไม่ ตัวอย่าง เช่น ใช้ระยะเวลาในการประมวลผลนานเท่าใด ใช้หน่วยความจำมากเกินความจำเป็นหรือไม่

การวัดประสิทธิภาพของอัลกอริทึมแบ่งออกเป็น 2 รูปแบบ

  • การวิเคราะห์หน่วยความจำที่ใช้ประมวลผล (Space Complexity Analysis)
  • การวิเคราะห์เวลาในการประมวลผล (Time Complexity Analysis)

การวิเคราะห์หน่วยความจำที่ใช้ประมวลผล(Space Complexity Analysis) คือ การวิเคราะห์หน่วยความจำทั้งหมดที่โปรแกรมใช้ประมวลผลอัลกอริทึม เพื่อให้ทราบถึงขนาดข้อมูลที่ต้องการป้อนหรือส่งข้อมูลเข้ามาให้อัลกอริทึมประมวลผลแล้วไม่เกิดข้อผิดพลาด การวิเคราะห์หน่วยความจำที่ใช้ประมวลผล มีองค์ประกอบอยู่ 3 ส่วน

  1. Instruction Space คือ ขนาดหน่วยความจำที่จำเป็นต้องใช้ ขณะคอมไพล์โปรแกรม
  2. Data Space คือ ขนาดหน่วยความจำที่จำเป็นต้องใช้ในการเก็บข้อมูลประเภทตัวแปรและค่าคงที่ในการประมวลผลโปรแกรม
  3. Environment Stack Space คือ หน่วยความจำที่ใช้สำหรับเก็บข้อมูลผลลัพธ์จากการประมวลผล

การวิเคราะห์เวลาในการประมวลผล (Time Complexity Analysis) เป็นการวิเคราะห์ขั้นตอนการประมวลผลของอัลกอริทึมในการประมาณเวลาที่ใช้ประมวลผล

หลักพิจารณาก่อนวิเคราะห์เวลาในการประมวลผล

  • เมื่อประมวลผลโปรแกรมเดียวกัน คอมพิวเตอร์ที่สเปคดีกว่าจะประมวลผลได้เร็วกว่าคอมพิวเตอร์ที่สเปคต่ำหรือไม่
  • เมื่อประมวลผลโปรแกรม จำนวนคำสั่งที่มีน้อยกว่าจะทำงานเร็วกว่าโปรแกรมที่มีคำสั่งมากกว่าหรือไม่
  • ตัวแปรที่มีขนาดเล็กจะประมวลผลเร็วกว่าตัวแปรที่มีขนาดใหญ่หรือไม่

ประเภทของเวลาที่ใช้ประมวลผลแบ่งออกเป็น 2 ประเภท ได้แก่

  • Compile Time เวลาที่ใช้ตรวจไวยากรณ์ภาษา (Syntax) ของโค้ดโปรแกรมว่าเขียนถูกต้องตามโครงสร้างภาษาที่ใช้เขียนโปรแกรมหรือไม่
  • Runtime เป็นเวลาที่เครื่องคอมพิวเตอร์ใช้ประมวลผลโปรแกรม ซึ่งขึ้นอยู่กับชนิดข้อมูล จำนวนตัวแปร และจำนวนลูปที่ใช้ภายในการพัฒนาโปรแกรมที่ประมวลผล

ตัวอย่างอัลกอริทึมคำนวณหาผลรวมของตัวเลข

คำสั่งที่ 1

function summation(n){
total=0
for(i=1;i<=n;i++){
total+=i
}
return total
}

คำสั่งที่ 2

function summation(n){
return n*(n+1)/2
}
อัตราการเติบโตของฟังก์ชั่นของคำสั่งที่ 1 และคำสั่งที่ 2

อยากรู้ว่าโปรแกรมที่เขียนขึ้นมานั้นมีระยะเวลาทำงานเร็วหรือช้าจะต้องวัดประสิทธิภาพของอัลกอริทึม โดยวิเคราะห์จาก “ อัตราการเติบโตของฟังก์ชั่น ”คือ การวิเคราะห์ประสิทธิภาพของอัลกอริทึมจะดูจากอัตราการเติบโตที่เกิดขึ้นภายในฟังก์ชั่น

เนื้อหาที่เกี่ยวข้อง

ช่องทางการสนับสนุน
🎓 คอร์สพัฒนาเว็บด้วย JavaScript 40 Workshop

🌎 ติดตามข่าวสารเพิ่มเติมได้ที่
Facebook | YouTube | TikTok

--

--

KongRuksiam Studio
KongRuksiam Studio

Written by KongRuksiam Studio

เรียนรู้การเขียนโปรแกรมนอกห้องเรียน

No responses yet