Optimization

Optimization
By Leonardo.ai

หมายถึง กระบวนการปรับปรุงประสิทธิภาพโดยรวม ความมีประสิทธิผล (effectiveness) หรือประสิทธิภาพ (efficiency) ของระบบ กระบวนการ หรืออัลกอริทึม ในบริบทของการเขียนโปรแกรมและวิทยาการคอมพิวเตอร์ มักเกี่ยวข้องกับ

  1. การลดเวลาในการประมวลผล (ความซับซ้อนด้านเวลา)
  2. การลดการใช้หน่วยความจำให้น้อยที่สุด
  3. การปรับปรุงการใช้ทรัพยากร (CPU, Network ฯลฯ)
  4. การเพิ่มความสามารถในการ Scaling
  5. การเพิ่ม Throughput หรือ Responsiveness

การเพิ่มประสิทธิภาพสามารถเกิดขึ้นได้ในหลายระดับ:

  1. Algorithm optimization: การเลือกหรือพัฒนา Algorithm ที่มีประสิทธิภาพมากขึ้น
  2. Code optimization: การเขียนโค้ดที่มีประสิทธิภาพมากขึ้นภายในอัลกอริทึมที่กำหนด
  3. Complier optimization: ใช้ Complier ที่ทำให้ Code มีประสิทธิภาพมากขึ้น
  4. 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.