作者:手机用户2502869145_913 | 来源:互联网 | 2022-12-05 22:30
我想做一些关于clojure文件加载速度的时间.有没有办法挂钩加载器来获取这些信息?
我想获得这样的信息:
ie. A depends on B depends on C
A -> starting to load at T(a0)
B -> starting to load at T(b0)
C -> starting to load at T(c0)
C -> loaded at T(c1), time taken 50ms
B -> loaded at T(b1), time taken 100ms
A -> loaded at T(a1), time taken 200ms
Taylor Wood..
5
你可以取代clojure.core/load-lib
(或像类似的功能load-one
或load
)与记录了一个包装功能部件/次,每调用:
(alter-var-root
#'clojure.core/load-lib
(fn [f]
(fn [prefix lib & options]
(println lib "loading...")
(let [start (System/nanoTime)
result (apply f prefix lib options)
elapsed (double (/ (- (System/nanoTime) start) 1000000))]
(println lib "loaded in" elapsed "ms")
result))))
然后,无论何时加载带ns
声明的文件,或使用require
/ use
等,您都会看到如下输出:
(require 'clojure.spec.test.alpha)
clojure.spec.test.alpha loading...
clojure.pprint loading...
clojure.pprint loaded in 0.159361 ms
clojure.spec.alpha loading...
clojure.spec.alpha loaded in 0.108056 ms
clojure.spec.gen.alpha loading...
clojure.spec.gen.alpha loaded in 0.116731 ms
clojure.string loading...
clojure.string loaded in 0.241387 ms
clojure.spec.test.alpha loaded in 103.37399 ms
=> nil
clojure.tools.namespace也可能有一些有用的功能.
1> Taylor Wood..:
你可以取代clojure.core/load-lib
(或像类似的功能load-one
或load
)与记录了一个包装功能部件/次,每调用:
(alter-var-root
#'clojure.core/load-lib
(fn [f]
(fn [prefix lib & options]
(println lib "loading...")
(let [start (System/nanoTime)
result (apply f prefix lib options)
elapsed (double (/ (- (System/nanoTime) start) 1000000))]
(println lib "loaded in" elapsed "ms")
result))))
然后,无论何时加载带ns
声明的文件,或使用require
/ use
等,您都会看到如下输出:
(require 'clojure.spec.test.alpha)
clojure.spec.test.alpha loading...
clojure.pprint loading...
clojure.pprint loaded in 0.159361 ms
clojure.spec.alpha loading...
clojure.spec.alpha loaded in 0.108056 ms
clojure.spec.gen.alpha loading...
clojure.spec.gen.alpha loaded in 0.116731 ms
clojure.string loading...
clojure.string loaded in 0.241387 ms
clojure.spec.test.alpha loaded in 103.37399 ms
=> nil
clojure.tools.namespace也可能有一些有用的功能.