Max*_*axB 3 garbage-collection jvm clojure
如果您在运行时频繁替换函数,就像这张海报为了基因编程的目的而想要做的那样,Clojure/JVM GC 会不会是旧代码?
如有疑问,请询问计算机!我写了一个快速测试:
(ns tst.demo.core
(:use demo.core tupelo.core tupelo.test))
(defn create-fn
[n]
(let [fname (symbol (format "add-%d" n))
body (vector '[x] (list '+ n 'x))
fn-form (apply list 'clojure.core/defn fname body)
fn-ref (eval fn-form)]
fn-ref))
(defn create-and-call-fn
[n]
(let [fn-ref (create-fn n)
fn-result (fn-ref 3)]
(when-not (= (+ 3 n) fn-result)
(throw (ex-info "bad result" (vals->map n fn-result))))))
(dotest
(let [f5 (create-fn 5)
f5-result (f5 3)]
(is= 8 f5-result))
(dotimes [i 99999]
(when (zero? (mod i 100)) (spyx i))
(create-and-call-fn i)))
Run Code Online (Sandbox Code Playgroud)
之后创建多达 10 万个函数,它仍然有效。天啊!
以上是基于这个模板项目。
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |