Skip to content

Instantly share code, notes, and snippets.

@ryfow
Created February 11, 2016 20:14
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save ryfow/4283b64b4dd205d610e8 to your computer and use it in GitHub Desktop.
Save ryfow/4283b64b4dd205d610e8 to your computer and use it in GitHub Desktop.
(def ^:dynamic *indent* 0)
(alter-var-root
#'clojure.core/load
(fn [orig]
(fn [& paths]
(let [t (System/nanoTime)
r (binding [*indent* (inc *indent*)]
(apply orig paths))]
(binding [*out* *err*]
(println (apply str (repeat *indent* " ")) (/ (- (System/nanoTime) t) 1000000.0) paths)
(flush))
r))))
(require 'clojure.core.async)
@ryfow
Copy link
Author

ryfow commented Feb 11, 2016

Example usage:

CP=$(lein classpath)
java -cp $CP clojure.main timing_load.clj

Example output:

ryans-mbp:~/oss/core.async% java -cp $CP clojure.main timing_load.clj
  169.929 (/clojure/core/async/impl/protocols)
     53.167 (/clojure/core/async/impl/concurrent)
    83.628 (/clojure/core/async/impl/exec/threadpool)
   100.717 (/clojure/core/async/impl/dispatch)
   25.539 (/clojure/core/async/impl/mutex)
  266.849 (/clojure/core/async/impl/channels)
  46.052 (/clojure/core/async/impl/buffers)
  47.932 (/clojure/core/async/impl/timers)
    24.305 (/clojure/walk)
    9.628 (pprint/utilities)
    9.35 (pprint/column_writer)
    33.72 (pprint/pretty_writer)
    13.032 (pprint/pprint_base)
    111.428 (pprint/cl_format)
    55.346 (pprint/dispatch)
    2.202 (pprint/print_table)
   267.573 (/clojure/pprint)
     27.161 (/clojure/tools/analyzer/env)
    139.045 (/clojure/tools/analyzer/utils)
   332.482 (/clojure/tools/analyzer)
   30.697 (/clojure/tools/analyzer/ast)
   76.024 (/clojure/tools/analyzer/passes)
   58.758 (/clojure/tools/analyzer/passes/jvm/annotate_loops)
       16.936 (/clojure/set)
       54.829 (reflect/java)
      85.408 (/clojure/reflect)
          6.175 (/clojure/template)
          10.393 (/clojure/stacktrace)
         59.479 (/clojure/test)
        142.204 (/clojure/data/priority_map)
       336.073 (/clojure/core/cache)
      426.909 (/clojure/core/memoize)
     633.402 (/clojure/tools/analyzer/jvm/utils)
      8.855 (/clojure/tools/analyzer/passes/cleanup)
      32.734 (/clojure/tools/analyzer/passes/jvm/validate_recur)
         14.933 (/clojure/tools/analyzer/passes/source_info)
        43.072 (/clojure/tools/analyzer/passes/elide_meta)
       85.13 (/clojure/tools/analyzer/passes/trim)
         44.341 (/clojure/tools/analyzer/passes/constant_lifter)
         63.95 (/clojure/tools/analyzer/passes/jvm/analyze_host_expr)
        127.59 (/clojure/tools/analyzer/passes/jvm/constant_lifter)
       186.189 (/clojure/tools/analyzer/passes/jvm/annotate_tag)
       37.466 (/clojure/tools/analyzer/passes/jvm/annotate_host_info)
         47.907 (/clojure/tools/analyzer/passes/uniquify)
        63.695 (/clojure/tools/analyzer/passes/add_binding_atom)
       77.544 (/clojure/tools/analyzer/passes/jvm/fix_case_test)
      514.474 (/clojure/tools/analyzer/passes/jvm/infer_tag)
     747.141 (/clojure/tools/analyzer/passes/jvm/validate)
     22.198 (/clojure/tools/analyzer/passes/jvm/classify_invoke)
    1478.03 (/clojure/tools/analyzer/passes/jvm/validate_loop_locals)
   1502.496 (/clojure/tools/analyzer/passes/jvm/warn_on_reflection)
    12.57 (/clojure/tools/analyzer/passes/warn_earmuff)
    92.472 (/clojure/tools/analyzer/passes/jvm/box)
     114.697 (/clojure/tools/analyzer/passes/emit_form)
    228.477 (/clojure/tools/analyzer/passes/jvm/emit_form)
      22.691 (/clojure/tools/reader/impl/utils)
     187.329 (/clojure/tools/reader/reader_types)
     40.084 (/clojure/tools/reader/impl/commons)
     99.807 (/clojure/tools/reader/default_data_readers)
    481.029 (/clojure/tools/reader)
   941.689 (/clojure/tools/analyzer/jvm)
  3756.502 (/clojure/core/async/impl/ioc_macros)
 5458.161 (/clojure/core/async)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment