2015-01-08 1 views
0

저는 최근에받은 숙제에 사용 된 "빠른"버전의 기능을 개선 할 수있는 방법이 있는지 알고 싶습니다. 이미 완료된 작업을 제출했습니다.파이썬에서 함수 계산을 더 빨리 수행 할 수 있습니까?

from math import log 

def func_fast(mass, density): 
    return sum(map((log(mass * density)).__truediv__, range(1,10001))) 

def func_slow(mass, density): 
    total = 0.0 
    for i in range(10000): 
     masslog = log(mass * density) 
     total += masslog/(i+1) 

    return total 

mass = 2.5 
density = 12.0 

저속 버전이 6-7 초 동안 걸리는 동안 빠른 버전 시간은 약 2-2.5ish 초입니다.

+0

총 + = log (질량 * 밀도)/(i + 1)은 수 밀리 초를 줄일 수 있지만 실제로 주목할만한 것은 없습니다. –

+0

'log' 계산을 루프 밖으로 옮기면 (실제로'func_fast' 함수가 다르게하고있는 것입니다) ... – filmor

+0

사실, 제가 여기에 쓴 것을하면 '로그 (질량 * 밀도)'는 미리 계산 됨), "느린"기능은 "빠른"기능보다 약 20 % 빠릅니다. – filmor

답변

2

사용 NumPy와 :

import numpy as np 

def func_faster(mass, density): 
    return (log(mass*density)/np.arange(1, 10001)).sum() 

이 10 배 빠른 내 컴퓨터에 있습니다.

+0

numpy는 외부 용이므로 사용할 수 없습니다. 기준 치수. :) –

관련 문제