an einer Funktion heute in meinem Code Sehen, fragte ich mich, ob es möglich war teilweise Kombination und Optimierung zu kombinieren:F #: Partielle Anwendung und Vorkalkulation
let foo (X:float) y1 y2 dx =
y1 + (y2 - y1) * dx/X
Grundsätzlich nur ein Verhältnis der Anwendung - so die ersten drei Parameter sind innerhalb einer gegebenen Schleife im Allgemeinen gleich.
Ich dachte, vielleicht, wenn ich dies tue gerade:
let foo2 (X:float) y1 y2 dx =
let dy = (y2 - y1)/X
y1 + dy * dx
F # wäre für mich klug und optimieren, wenn ich die ersten drei Parameter teilweise anwenden, aber es Debug-Modus scheint es nicht der Fall zu sein (obwohl ich nicht sicher bin, ob ich es richtig getestet habe).
Die Frage ist, sollte das funktionieren? Und wenn nicht, gibt es einen besseren Weg, es zu tun (abgesehen davon, nur eine andere Funktion mit zwei Parametern zu schreiben)?
Nebenbei gesagt, das ist der Grund, warum Leute z.B. ein "PureAttribute" in .Net, das Sie "Expensive" verwenden könnten (vorausgesetzt, dass es nicht gedruckt wurde, im Gegensatz zu meinem Beispiel), um Compiler in diese Optimierung einzubeziehen. Alternativ dazu können Leute wie Haskell, wo alles rein ist und Compiler/Laufzeiten jeden Funktionsaufruf "cachen" dürfen. Am Ende des Tages, meine persönliche Meinung ist, dass die Hoffnung, dass das System "magisch optimieren" dies für Sie ist ein Pfeifentraum. Wenn Sie möchten, dass Ihr Code schnell ist, schreiben Sie ihn Schritt für Schritt an Herrn Computer. Menschen müssen immer die harte Arbeit machen. – Brian
Ihre Baudrate war genau die gleiche wie die meines Gehirns :) – Benjol