Optimization
หมายถึง กระบวนการปรับปรุงประสิทธิภาพโดยรวม ความมีประสิทธิผล (effectiveness) หรือประสิทธิภาพ (efficiency) ของระบบ กระบวนการ หรืออัลกอริทึม ในบริบทของการเขียนโปรแกรมและวิทยาการคอมพิวเตอร์ มักเกี่ยวข้องกับ
- การลดเวลาในการประมวลผล (ความซับซ้อนด้านเวลา)
- การลดการใช้หน่วยความจำให้น้อยที่สุด
- การปรับปรุงการใช้ทรัพยากร (CPU, Network ฯลฯ)
- การเพิ่มความสามารถในการ Scaling
- การเพิ่ม Throughput หรือ Responsiveness
การเพิ่มประสิทธิภาพสามารถเกิดขึ้นได้ในหลายระดับ:
- Algorithm optimization: การเลือกหรือพัฒนา Algorithm ที่มีประสิทธิภาพมากขึ้น
- Code optimization: การเขียนโค้ดที่มีประสิทธิภาพมากขึ้นภายในอัลกอริทึมที่กำหนด
- Complier optimization: ใช้ Complier ที่ทำให้ Code มีประสิทธิภาพมากขึ้น
- System-level optimization: การปรับแต่งพารามิเตอร์ของระบบปฏิบัติการหรือการกำหนดค่าฮาร์ดแวร์
เป้าหมายคือการใช้ทรัพยากรที่มีอยู่ให้เกิดประโยชน์สูงสุดในขณะที่บรรลุผลลัพธ์ที่ต้องการ ซึ่งมักต้องมีการ Trade-off เช่น ความเร็วกับการใช้หน่วยความจำที่มากขึ้นหรือความสามารถในการอ่าน Code ที่ยากขึ้น
ตัวอย่าง Code พร้อม Use case:
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
def find_primes(limit):
primes = []
for num in range(2, limit + 1):
if is_prime(num):
primes.append(num)
return primes
# การใช้งาน
print(find_primes(100))
ด้านบนแสดงตัวอย่างพื้นฐานที่ใช้งานได้ แต่ไม่มีประสิทธิภาพมากนัก ในกรณีที่ limit มีค่ามากๆ สามารถเพิ่มประสิทธิภาพโดยใช้ Sieve of Eratosthenes algorithm:
def find_primes_optimized(limit):
sieve = [True] * (limit + 1)
sieve[0] = sieve[1] = False
for i in range(2, int(limit**0.5) + 1):
if sieve[i]:
for j in range(i*i, limit + 1, i):
sieve[j] = False
return [num for num in range(2, limit + 1) if sieve[num]]
# การใช้งาน
print(find_primes_optimized(100))
เป็น Version ที่ Optimization ทำงานได้เร็วกว่ามาก โดยเฉพาะสำหรับ limit ที่มีค่ามากๆ เปรียบเทียบได้ดังนี้:
import time
def compare_performance(limit):
start = time.time()
find_primes(limit)
basic_time = time.time() - start
start = time.time()
find_primes_optimized(limit)
optimized_time = time.time() - start
print(f"ขีดจำกัด: {limit}")
print(f"เวลาของการใช้งานพื้นฐาน: {basic_time:.4f} วินาที")
print(f"เวลาของการใช้งานที่เพิ่มประสิทธิภาพ: {optimized_time:.4f} วินาที")
print(f"เร็วขึ้น: {basic_time / optimized_time:.2f} เท่า")
compare_performance(10000)
Blog นี้ เขียนร่วมกับ Claude.ai โดยใช้ Prompt
Please explain about general optimization with sample code and use case.