λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Code/Python

[python] μ½”λ“œ μ‹€ν–‰ μ‹œκ°„ μΈ‘μ •ν•˜κΈ°

by hyelog 2022. 8. 7.

πŸ‘‰ time λͺ¨λ“ˆ μ΄μš©ν•˜κΈ°

import time

start = time.time() # μ‹œμž‘μ‹œκ°„

# μˆ˜ν–‰μ‹œκ°„μ„ μ•Œκ³  싢은 μ½”λ“œ
checked = [False, False] + [True]*98
for i in range(2,100):
	if checked[i]:
    	for j in range(2*i, 100, i):
        	 checked[j] = False
             
end = time.time() # μ’…λ£Œμ‹œκ°„
print(end - start) # μ†Œμš”μ‹œκ°„(초 λ‹¨μœ„)

πŸ‘‰ timeit μ΄μš©ν•˜κΈ°

$ python -m timeit 'μˆ˜ν–‰μ‹œκ°„μ„ 재고 싢은 μ½”λ“œ 쑰각'
10000 loops, best of 3: 28.6 usec per loop

1. 10000 loops : μˆ˜ν–‰μ‹œκ°„μ„ μ•Œκ³  싢은 μ½”λ“œλ₯Ό 10000번 μ‹€ν–‰ν•œλ‹€.

2. 10000번 μˆ˜ν–‰ν•œ μ‹œκ°„ / 10000 -> 10000번 λ™μ•ˆμ˜ 평균 μˆ˜ν–‰μ‹œκ°„μ„ κ³„μ‚°ν•œλ‹€.

3. μœ„ 두 과정을 3번 λ°˜λ³΅ν•œλ‹€.

4.  best of 3: 28.6 usec per loop : 3번의 평균 μˆ˜ν–‰μ‹œκ°„ 쀑 κ°€μž₯ μž‘μ€ 값을 좜λ ₯ν•œλ‹€.

  • -n : 반볡 μˆ˜ν–‰ 횟수(평균 μˆ˜ν–‰μ‹œκ°„μ„ ꡬ할 λ•Œ μ‚¬μš©) default : 10000
  • -r : 반볡 횟수(1-2λ₯Ό 과정을 λ°˜λ³΅ν•˜λŠ” 횟수) default : 5
  • -s : μˆ˜ν–‰μ‹œκ°„ 츑정을 μ›ν•˜λŠ” μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κΈ° 전에 ν•œλ²ˆλ§Œ μ‹€ν–‰ν•˜κ³  싢은 μ½”λ“œκ°€ μžˆλ‹€λ©΄ μ‚¬μš© (μ‹œκ°„μΈ‘μ •X)
    ex) -s "ν•œλ²ˆλ§Œ 싀행을 μ›ν•˜λŠ” μ½”λ“œ" 'μˆ˜ν–‰μ‹œκ°„μ„ μ•Œκ³  싢은 μ½”λ“œ'
  • -v : 각 λ°˜λ³΅λ§ˆλ‹€μ˜ 결과값을 λͺ¨λ‘ 좜λ ₯
더보기

기본적으둜, timeit()은 μ‹œκ°„ μΈ‘μ • 쀑에 κ°€λΉ„μ§€ 수거λ₯Ό μΌμ‹œμ μœΌλ‘œ λ•λ‹ˆλ‹€. 이 λ°©λ²•μ˜ μž₯점은 독립적인 μ‹œκ°„ 츑정이 더 잘 비ꡐ될 수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 단점은 GCκ°€ μΈ‘μ •λ˜λŠ” ν•¨μˆ˜μ˜ μ„±λŠ₯μ—μ„œ μ€‘μš”ν•œ μš”μ†Œκ°€ 될 수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

 

- 파일 λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜κΈ°

timeit.Timer('for i in range(10): oct(i)', 'gc.enable()').timeit()

- ν„°λ―Έλ„μ—μ„œ μ‚¬μš©ν•˜κΈ°

$ python -m timeit -n 1000 -r 5 -s 'from loop import loop; iterations = 100; gc.enable()'

timeit λͺ¨λ“ˆλ‘œ κ°„λ‹¨νžˆ μΈ‘μ •ν•˜κΈ°

import timeit

#μ›ν•˜λŠ” μ½”λ“œ ν•¨μˆ˜ν™” ν•˜κΈ°
def sol()
	return ans
# μˆ˜ν–‰μ‹œκ°„ μΈ‘μ •    
%timeit sol()

μ΄λ ‡κ²Œλ„ μ‚¬μš©ν•  수 μžˆλŠ”λ°, μˆ˜ν–‰κ³Όμ •μ€ μœ„μ˜ 방식과 κ°™λ‹€.

λŒ“κΈ€