python

Python iterable 객체의 데이터를 받는 method 속도비교

yssy431 2020. 7. 23. 13:15

대량의 데이터를 전처리를 하다가 현재 코딩한 방법보다 더 빠르게 전처리할 방법들을 찾아보다가 iterable 객체 처리 속도 증가 방법을 고민하게 됨, 현재 머신러닝 학습전 데이터 전처리 중간과정을 통하여 test해보았다.

 

 

총3가지의 방법으로 비교

 

1. append를 이용한 list data받기

string을 list로 반환하는 공통 함수

def strLst(string):  
    str_ = string[1:-1]  
    str_ = str_.replace("'",'')  
    str_ = str_.split(', ')  
    return str_[:10000]  

tmp list변수를 선언한후 append로 가져오는 방법을 주로 사용

tmp = []  
for x in test[:1000]:  
    tmp.append(strLst(x))  

2.86 s ± 17.3 ms per loop (mean ± std. dev. of 10 runs, 100 loops each)  

 

2. List Comprehension 방법

tmp = [strLst(x) for x in test[:1000]]     

2.97 s ± 97.6 ms per loop (mean ± std. dev. of 10 runs, 100 loops each)  

 

3. python의 내장함수 map 활용

tmp = list(map(strLst,test[:1000]]  

2.87 s ± 7.47 ms per loop (mean ± std. dev. of 10 runs, 100 loops each)

 

 

반복실행 결과 표(%%timeit -n 100 -r 10로 1000회 반복 테스트 )

Method  결과
append를 활용 2.86 s ± 17.3 ms
List Comprehension 2.97 s ± 97.6 ms
map method 2.87 s ± 7.47 ms

 

코드 가독성과, 속도를 생각해보면 앞으론 2,3번째의 방법으로 코드를 작성해야 겠다고 느끼게 됨