JanetDocsSourcePlaygroundTutorialsI'm Feeling luckyCommunityGitHub sign in

*optimize*

core-api


    keyword
    boot.janet on line 1509, column 1

    Set optimization level for the the `compile` function. Default is 
    0, and higher integer levels will enable more optimization.


1 exampleSign in to add an example
Loading...
# By default, top level defs perform better:
(defn let-sum [] (let [a 1 b 2 c 3] (+ a b c)))
(def a 1)
(def b 2)
(def c 3)
(defn top-def-sum []  (+ a b c))

(disasm let-sum)     # (ldi 0 1) (ldi 1 2) (ldi 2 3) (add 3 0 1) (add 3 3 2)
(disasm top-def-sum) # (ldi 0 1) (addim 1 0 2) (addim 1 1 3)

# But with *optimize* level 3, they are both better
# n.b. func must be (re)defined after *optimize* is set
(setdyn *optimize* 3)
(defn let-sum [] (let [a 1 b 2 c 3] (+ a b c)))
(defn top-def-sum []  (+ a b c))

(disasm let-sum)     # (ldi 0 6)
(disasm top-def-sum) # (ldi 0 6)

# currently, implemented optimizations are mostly in 1 and 2
veqqqPlayground