我想要计算1 + 1/2 + 1/3 + ... + 1/100000000的和(使用双精度浮点数)。
在SBCL中,这段代码的运行速度与C语言一样快:
(loop for i fixnum from 1 to 100000000 sum (/ 1.0d0 i) double-float)
我该如何在Typed Racket中优化这段代码?我尝试过:
#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))
这段代码只比未经类型定义的代码快了一点。我能做得更好吗?
optimization-coach
包。 - Greg Hendershott