Ich möchte die Summe von 1 + 1/2 + 1/3 + ... + 1/100000000 (mit Doppel-Float) berechnen.Wie wird dieses Stück Racket-Code optimiert?
Mit SBCL, läuft dieser Code so schnell wie in C:
(loop for i fixnum from 1 to 100000000 sum (/ 1.0d0 i) double-float)
Wie kann ich diesen Code in typisierten Racket zu optimieren? Ich habe versucht
#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))
Dieser Code ist nur ein bisschen schneller als untypisierte. Kann ich weiter gehen?
Ein schneller Vorschlag ist das ['optimization-coach' Paket] (https://github.com/stamourv/optimization-coach/tree/master). –