Tôi muốn tính tổng của 1 + 1/2 + 1/3 + ... + 1/100000000 (sử dụng phao kép).Làm cách nào để tối ưu hóa đoạn mã Racket này?
Với SBCL, mã này chạy nhanh như trong C:
(loop for i fixnum from 1 to 100000000 sum (/ 1.0d0 i) double-float)
Làm thế nào tôi có thể tối ưu hóa mã này trong Typed vợt? Tôi đã thử
#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))
Mã này chỉ nhanh hơn một chút so với mã chưa được nhập. Tôi có thể đi xa hơn không?
Một đề xuất nhanh là thử gói ['tối ưu hóa-huấn luyện viên] (https://github.com/stamourv/optimization-coach/tree/master). –