1 + 1/2 + 1/3 + ... + 1/100000000의 합계를 계산하고 싶습니다 (double float 사용).이 라켓 코드를 최적화하는 방법은 무엇입니까?
SBCL와,이 코드는 C에서와 같이 빠른 실행 :
(loop for i fixnum from 1 to 100000000 sum (/ 1.0d0 i) double-float)
어떻게 형식화 된 라켓이 코드를 최적화 할 수 있습니다? 시도했습니다.
#lang typed/racket
(define: (test) : Float
(for/fold: : Float
([s : Float 0.0])
([i : Fixnum (in-range 1 100000001)])
(+ s (/ 1.0 i))))
(time (test))
이 코드는 유형이없는 것보다 약간 빠릅니다. 더 가도 될까요?
한 빠른 제안은 ['최적화-coach' 패키지]를 시도하는 것입니다 (https://github.com/stamourv/optimization-coach/tree/master). –