๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Langauge/Python

[Python] ์—ฐ์‚ฐ ์†๋„ ์˜ฌ๋ฆฌ๊ธฐ - ๋‚ด์žฅ ํ•จ์ˆ˜ ์‚ฌ์šฉ

728x90
๋ฐ˜์‘ํ˜•
๐Ÿ ๋ณธ ๊ฒŒ์‹œ๊ธ€์€ Python 3.11.0 ํ™˜๊ฒฝ์—์„œ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

 

์—ฐ์‚ฐ ์†๋„๋ฅผ ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ ํŒŒ์ด์ฌ์˜ ๋‚ด์žฅํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ์‹œ : ๋ฆฌ์ŠคํŠธ ์ค‘๋ณต ์ œ๊ฑฐ ๋ฐ ์ •๋ ฌ

import time
if __name__ == "__main__":
    # ์ค‘๋ณต๋œ ์ˆซ์ž๊ฐ€ ํฌํ•จ๋œ ๋ฆฌ์ŠคํŠธ
    numbers = [5, 3, 8, 5, 2, 3, 9, 1, 2, 8, 7]

    start = time.time()

    # 1. ์ค‘๋ณต ์ œ๊ฑฐ
    unique_numbers = []
    for num in numbers:
        if num not in unique_numbers:
            unique_numbers.append(num)
    time.sleep(0.1)
    # 2. ์ •๋ ฌ (๋ฒ„๋ธ” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ)
    n = len(unique_numbers)
    for i in range(n):
        for j in range(0, n-i-1):
            if unique_numbers[j] > unique_numbers[j+1]:
                # swap
                unique_numbers[j], unique_numbers[j+1] = unique_numbers[j+1], unique_numbers[j]

    end = time.time()

    print(f"์ง์ ‘ ๊ตฌํ˜„ : {end-start:.4f}sec")

    start = time.time()
    
    # ์ค‘๋ณต ์ œ๊ฑฐ
    unique_numbers = list(set(numbers))
    time.sleep(0.1)
    # ์ •๋ ฌ
    sorted_numbers = sorted(unique_numbers)
    
    end = time.time()
    print(f"๋‚ด์žฅํ•จ์ˆ˜ ์‚ฌ์šฉ : {end-start:.4f}sec")

 

์˜ˆ์‹œ : ๋ฆฌ์ŠคํŠธ ๋‚ด ์ตœ๋Œ€๊ฐ’ ์ฐพ๊ธฐ

import time
import numpy as np
if __name__ == "__main__":
    numbers = [np.random.randint(0,1000) for _ in range(10000000)]

    start = time.time()
    # ์ดˆ๊ธฐ ์ตœ๋Œ€๊ฐ’์„ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋กœ ์„ค์ •
    max_value = numbers[0]

    # ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์ตœ๋Œ€๊ฐ’ ์ฐพ๊ธฐ
    for num in numbers:
        if num > max_value:
            max_value = num
    end = time.time()
    print(f"์ง์ ‘ ๊ตฌํ˜„ : {end-start:.4f}sec")

    start = time.time()

    # NumPy ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ ํ›„ ์ตœ๋Œ€๊ฐ’ ์ฐพ๊ธฐ
    max_value = np.max(numbers)
    end = time.time()
    print(f"Numpy : {end-start:.4f}sec")

 

์ด๋ ‡๊ฒŒ ๋ฐฐ์—ด ์—ฐ์‚ฐ์„ ํ•  ๋•Œ Numpy ๋‚ด์žฅ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๋น ๋ฅธ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•