Python은 인터프리터 언어로서 C/C++과 같은 컴파일 언어보다 속도가 느립니다.

하지만 numba 라이브러리를 사용하면 컴파일 언어로 바꿔서 사용할 수 있습니다.

 

import math
import numpy as np
import time
from numba import njit


def std(xs):
    mean = 0
    for x in xs:
        mean += x
    mean /= len(xs)
    ms = 0
    for x in xs:
        ms += (x-mean)**2
    variance = ms / len(xs)
    std = math.sqrt(variance)
    return std


if __name__ == '__main__':
    a = np.random.normal(0, 1, 10000000)
    start = time.time()
    std(a)
    end = time.time()
    print('njit (X) TIME : {}'.format(end-start))

    c_std = njit(std)
    start = time.time()
    c_std(a)
    end = time.time()
    print('njit (O) TIME : {}'.format(end-start))

+ Recent posts