아래 블로그에서는 파이썬 코드가 왜 느린지에 대해서 설명하면서, 파이썬에서 변수가 어떤 식으로 관리되고 있는지에 대해서 알려 준다.
http://jakevdp.github.io/blog/2014/05/09/why-python-is-slow/
결국 파이썬의 데이터 타입은 절묘하게 작성된 C의 구조체임을 알 수 있다.
--- 파이썬 리스트와 넘파이 배열 비교 하기 ------------
import numpy
import numpy as np
import time
import sys
# 넘파이 배열
array = np.arange(100)
# array.itemsize : Size of one element
# array.size : length of array
print("Size of NumPy array: ", array.itemsize * array.size)
# 리스트
list = range(0, 100)
# Multiplying size of 1 element with length of the list
print("Size of list: ", sys.getsizeof(1) * len(list)) # 객체의 메모리 크기 * 리스트에 속한 값의 갯수
print('계산속도의 차이 비교 ---------')
Size = 100000
# Creating two lists
list1 = range(Size)
list2 = range(Size)
# Creating two NumPy arrays
arr1 = np.arange(Size)
arr2 = np.arange(Size)
# Calculating time for Python list
start = time.time()
result = [(x, y) for x, y in zip(list1, list2)]
print("Time for Python List in msec: ", (time.time() - start) * 1000)
# Calculating time for NumPy array
start = time.time()
result = arr1, arr2
print("Time for NumPy array in msec: ", (time.time()- start) * 1000)
# ----------------------------------------------------------
