diff options
Diffstat (limited to '')
-rw-r--r-- | src/lux/optimizer.clj | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/lux/optimizer.clj b/src/lux/optimizer.clj index c032bc7fb..be6df920f 100644 --- a/src/lux/optimizer.clj +++ b/src/lux/optimizer.clj @@ -1,5 +1,15 @@ (ns lux.optimizer (:require [lux.analyser :as &analyser])) +;; [List of pending optimizations] +;; Global functions: direct currying or direct invocation when function is known at compile-time +;; Improving function calls: add extra arities (apply2, apply3, ..., apply16) +;; Recursion: tail-call optimization +;; Pattern-matching: decision-trees to avoid unnecessary tests +;; Less classes generated per function: Fold nested function classes into one. +;; Mutability for performance: do escape analysis to know when data-structures can be mutated in-place without anybody noticing. +;; Avoid (un)boxing: Analyser movement of primitive values to/from functions to known when (un)boxing can be avoided. +;; Pre-compute constant expressions: Find function calls for which all arguments are known at compile-time and pre-calculate everything prior to compilation. + ;; [Exports] (def optimize &analyser/analyse) |