[Python] 성능 최적화
Y
Yerim
- Python
# 리스트를 사용한 경우
def find_duplicates(lst):
duplicates = []
for item in lst:
if lst.count(item) > 1:
if item not in duplicates:
duplicates.append(item)
return duplicates# 집합을 사용한 경우
def find_duplicate(lst):
return list(set([item for item in lst if lst.count(item) > 1]))from functools improt lru_cache
@lru_cache(maxsize=None)
def fib(num):
if num == 0:
return 0
if num == 1 or num == 2:
return 1
else:
return fib(num-1) + fib(num-2)
fib(50)# 메모이제이션을 활용한 피보나치 재귀 풀이
dic = (1:1, 2:1)
def fib_name(n):
if n in dic:
return dic(n)
dic[n] = fib_memo(n-1) + fib_memo(n-2)
return dic[n]
fib_memo(6)import cProfile
def add(a, b):
return a + b
def slow_function():
total = 0
for i in range(10000):
total += i
add(i, 100)
return total
cProfile.run('slow_function()')