Skip to content

Instantly share code, notes, and snippets.

@borkdude
Last active July 1, 2021 10:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save borkdude/8472055bd5b5e3108b9dbb69debc3137 to your computer and use it in GitHub Desktop.
Save borkdude/8472055bd5b5e3108b9dbb69debc3137 to your computer and use it in GitHub Desktop.
$ time java -cp classes:$(clojure -Spath) babashka.main -e '(+ 1 2 3)'
Loaded clojure/edn__init in 4282070 ns, total: 4282070
Loaded clojure/walk__init in 8616282 ns, total: 12898352
Loaded clojure/main__init in 153409896 ns, total: 166308248
Loaded clojure/core/server__init in 174603317 ns, total: 340911565
Loaded babashka/fs__init in 21068492 ns, total: 361980057
Loaded bencode/core__init in 8597579 ns, total: 370577636
Loaded clojure/set__init in 8493803 ns, total: 379071439
Loaded sci/impl/types__init in 14427674 ns, total: 393499113
Loaded sci/impl/macros__init in 3135493 ns, total: 396634606
Loaded sci/impl/unrestrict__init in 4184463 ns, total: 400819069
Loaded sci/lang__init in 2649270 ns, total: 403468339
Loaded sci/impl/vars__init in 51451676 ns, total: 454920015
Loaded sci/impl/core_protocols__init in 82143014 ns, total: 537063029
Loaded sci/impl/hierarchies__init in 5739816 ns, total: 542802845
Loaded sci/impl/io__init in 11057400 ns, total: 553860245
Loaded sci/impl/multimethods__init in 9490316 ns, total: 563350561
Loaded clojure/tools/reader/impl/utils__init in 5778254 ns, total: 569128815
Loaded clojure/tools/reader/reader_types__init in 39237951 ns, total: 608366766
Loaded clojure/tools/reader/impl/inspect__init in 8473954 ns, total: 616840720
Loaded clojure/tools/reader/impl/errors__init in 23225171 ns, total: 640065891
Loaded clojure/tools/reader/impl/commons__init in 35083484 ns, total: 675149375
Loaded clojure/tools/reader/default_data_readers__init in 12740733 ns, total: 687890108
Loaded clojure/tools/reader__init in 48781358 ns, total: 736671466
Loaded clojure/tools/reader/edn__init in 106117934 ns, total: 842789400
Loaded edamame/impl/read_fn__init in 5307798 ns, total: 848097198
Loaded edamame/impl/syntax_quote__init in 7286034 ns, total: 855383232
Loaded edamame/impl/parser__init in 153430130 ns, total: 1008813362
Loaded sci/impl/interop__init in 6244764 ns, total: 1015058126
Loaded sci/impl/utils__init in 9124599 ns, total: 1024182725
Loaded sci/impl/parser__init in 228707829 ns, total: 1252890554
Loaded sci/impl/protocols__init in 5545710 ns, total: 1258436264
Loaded sci/impl/read__init in 7543474 ns, total: 1265979738
Loaded sci/impl/records__init in 8194596 ns, total: 1274174334
Loaded sci/impl/reify__init in 4431175 ns, total: 1278605509
Loaded sci/impl/proxy__init in 3725260 ns, total: 1282330769
Loaded sci/impl/namespaces__init in 591485472 ns, total: 1873816241
Loaded babashka/impl/bencode__init in 613804577 ns, total: 2487620818
Loaded cheshire/factory__init in 39894186 ns, total: 2527515004
Loaded cheshire/generate__init in 10738272 ns, total: 2538253276
Loaded cheshire/generate_seq__init in 8251886 ns, total: 2546505162
Loaded cheshire/parse__init in 4871556 ns, total: 2551376718
Loaded cheshire/core__init in 81006252 ns, total: 2632382970
Loaded babashka/impl/cheshire__init in 94142287 ns, total: 2726525257
Loaded clojure/data/xml/protocols__init in 5782104 ns, total: 2732307361
Loaded clojure/data/xml/jvm/name__init in 3667097 ns, total: 2735974458
Loaded clojure/data/codec/base64__init in 6390766 ns, total: 2742365224
Loaded clojure/data/xml/impl__init in 10936604 ns, total: 2753301828
Loaded clojure/data/xml/name__init in 25505417 ns, total: 2778807245
Loaded clojure/data/xml/node__init in 10376522 ns, total: 2789183767
Loaded clojure/data/xml/pu_map__init in 6012548 ns, total: 2795196315
Loaded clojure/data/xml/event__init in 70727373 ns, total: 2865923688
Loaded clojure/data/xml/tree__init in 4147241 ns, total: 2870070929
Loaded clojure/data/xml/process__init in 81769199 ns, total: 2951840128
Loaded clojure/data/xml/prxml__init in 5742678 ns, total: 2957582806
Loaded clojure/data/xml/jvm/pprint__init in 3644769 ns, total: 2961227575
Loaded clojure/data/xml/jvm/parse__init in 6246032 ns, total: 2967473607
Loaded clojure/data/xml/jvm/emit__init in 33777727 ns, total: 3001251334
Loaded clojure/data/xml__init in 146677190 ns, total: 3147928524
Loaded babashka/impl/xml__init in 163039790 ns, total: 3310968314
Loaded flatland/ordered/common__init in 2733962 ns, total: 3313702276
Loaded flatland/ordered/set__init in 8484366 ns, total: 3322186642
Loaded flatland/ordered/map__init in 21873923 ns, total: 3344060565
Loaded clj_yaml/core__init in 45674434 ns, total: 3389734999
Loaded babashka/impl/yaml__init in 51616218 ns, total: 3441351217
Loaded sci/impl/destructure__init in 2335398 ns, total: 3443686615
Loaded sci/impl/doseq_macro__init in 2494677 ns, total: 3446181292
Loaded sci/impl/faster__init in 3138730 ns, total: 3449320022
Loaded sci/impl/evaluator__init in 15314377 ns, total: 3464634399
Loaded sci/impl/fns__init in 7007661 ns, total: 3471642060
Loaded sci/impl/for_macro__init in 2912498 ns, total: 3474554558
Loaded sci/impl/load__init in 6160459 ns, total: 3480715017
Loaded sci/impl/resolve__init in 4467065 ns, total: 3485182082
Loaded sci/impl/analyzer__init in 84222381 ns, total: 3569404463
Loaded sci/impl/opts__init in 10548981 ns, total: 3579953444
Loaded sci/impl/interpreter__init in 104389768 ns, total: 3684343212
Loaded sci/core__init in 117732699 ns, total: 3802075911
Loaded babashka/impl/ordered__init in 124028895 ns, total: 3926104806
Loaded clojure/core/async/impl/protocols__init in 16605696 ns, total: 3942710502
Loaded clojure/core/async/impl/concurrent__init in 2763741 ns, total: 3945474243
Loaded clojure/core/async/impl/exec/threadpool__init in 6530712 ns, total: 3952004955
Loaded clojure/core/async/impl/dispatch__init in 10737221 ns, total: 3962742176
Loaded clojure/core/async/impl/mutex__init in 2105051 ns, total: 3964847227
Loaded clojure/core/async/impl/channels__init in 22763830 ns, total: 3987611057
Loaded clojure/core/async/impl/buffers__init in 5706593 ns, total: 3993317650
Loaded clojure/core/async/impl/timers__init in 4843070 ns, total: 3998160720
Loaded clojure/pprint/utilities__init in 4387228 ns, total: 4002547948
Loaded clojure/pprint/column_writer__init in 2642315 ns, total: 4005190263
Loaded clojure/pprint/pretty_writer__init in 18883662 ns, total: 4024073925
Loaded clojure/pprint/pprint_base__init in 7473820 ns, total: 4031547745
Loaded clojure/pprint/cl_format__init in 48843043 ns, total: 4080390788
Loaded clojure/pprint/dispatch__init in 25772675 ns, total: 4106163463
Loaded clojure/pprint/print_table__init in 404417 ns, total: 4106567880
Loaded clojure/pprint__init in 124532834 ns, total: 4231100714
Loaded clojure/tools/analyzer/env__init in 2866773 ns, total: 4233967487
Loaded clojure/tools/analyzer/utils__init in 19873866 ns, total: 4253841353
Loaded clojure/tools/analyzer__init in 48705335 ns, total: 4302546688
Loaded clojure/tools/analyzer/ast__init in 5267798 ns, total: 4307814486
Loaded clojure/tools/analyzer/passes__init in 7549973 ns, total: 4315364459
Loaded clojure/tools/analyzer/passes/jvm/annotate_loops__init in 6301898 ns, total: 4321666357
Loaded clojure/datafy__init in 4869500 ns, total: 4326535857
Loaded clojure/reflect/java__init in 23891605 ns, total: 4350427462
Loaded clojure/reflect__init in 35390563 ns, total: 4385818025
Loaded clojure/data/priority_map__init in 6734970 ns, total: 4392552995
Loaded clojure/core/cache__init in 35960518 ns, total: 4428513513
Loaded clojure/core/memoize__init in 53296920 ns, total: 4481810433
Loaded clojure/tools/analyzer/jvm/utils__init in 122772707 ns, total: 4604583140
Loaded clojure/tools/analyzer/passes/cleanup__init in 2369518 ns, total: 4606952658
Loaded clojure/tools/analyzer/passes/jvm/validate_recur__init in 3895355 ns, total: 4610848013
Loaded clojure/tools/analyzer/passes/source_info__init in 2477796 ns, total: 4613325809
Loaded clojure/tools/analyzer/passes/elide_meta__init in 8624066 ns, total: 4621949875
Loaded clojure/tools/analyzer/passes/trim__init in 16096974 ns, total: 4638046849
Loaded clojure/tools/analyzer/passes/constant_lifter__init in 3704087 ns, total: 4641750936
Loaded clojure/tools/analyzer/passes/jvm/analyze_host_expr__init in 9786977 ns, total: 4651537913
Loaded clojure/tools/analyzer/passes/jvm/constant_lifter__init in 23784707 ns, total: 4675322620
Loaded clojure/tools/analyzer/passes/jvm/annotate_tag__init in 31811805 ns, total: 4707134425
Loaded clojure/tools/analyzer/passes/jvm/annotate_host_info__init in 3319064 ns, total: 4710453489
Loaded clojure/tools/analyzer/passes/uniquify__init in 5354599 ns, total: 4715808088
Loaded clojure/tools/analyzer/passes/add_binding_atom__init in 9455103 ns, total: 4725263191
Loaded clojure/tools/analyzer/passes/jvm/fix_case_test__init in 13823994 ns, total: 4739087185
Loaded clojure/tools/analyzer/passes/jvm/infer_tag__init in 85820335 ns, total: 4824907520
Loaded clojure/tools/analyzer/passes/jvm/validate__init in 105496098 ns, total: 4930403618
Loaded clojure/tools/analyzer/passes/jvm/classify_invoke__init in 2626778 ns, total: 4933030396
Loaded clojure/tools/analyzer/passes/jvm/validate_loop_locals__init in 242604093 ns, total: 5175634489
Loaded clojure/tools/analyzer/passes/jvm/warn_on_reflection__init in 248616555 ns, total: 5424251044
Loaded clojure/tools/analyzer/passes/warn_earmuff__init in 1641844 ns, total: 5425892888
Loaded clojure/tools/analyzer/passes/jvm/box__init in 7786856 ns, total: 5433679744
Loaded clojure/tools/analyzer/passes/emit_form__init in 9618821 ns, total: 5443298565
Loaded clojure/tools/analyzer/passes/jvm/emit_form__init in 19535911 ns, total: 5462834476
Loaded clojure/tools/analyzer/jvm__init in 64780707 ns, total: 5527615183
Loaded clojure/core/async/impl/ioc_macros__init in 579367006 ns, total: 6106982189
Loaded clojure/core/async__init in 672592626 ns, total: 6779574815
Loaded babashka/impl/async__init in 680168377 ns, total: 7459743192
Loaded clojure/data/csv__init in 4640019 ns, total: 7464383211
Loaded babashka/impl/csv__init in 7211679 ns, total: 7471594890
Loaded cognitect/transit__init in 16120760 ns, total: 7487715650
Loaded babashka/impl/transit__init in 24531275 ns, total: 7512246925
Loaded org/httpkit/encode__init in 3823650 ns, total: 7516070575
Loaded org/httpkit/client__init in 28435761 ns, total: 7544506336
Loaded org/httpkit/sni_client__init in 3802050 ns, total: 7548308386
Loaded babashka/impl/httpkit_client__init in 55937885 ns, total: 7604246271
Loaded org/httpkit/server__init in 26293545 ns, total: 7630539816
Loaded babashka/impl/httpkit_server__init in 38636966 ns, total: 7669176782
Loaded clojure/core/match/protocols__init in 31717199 ns, total: 7700893981
Loaded clojure/core/match__init in 124240476 ns, total: 7825134457
Loaded clojure/core/match/array__init in 2608451 ns, total: 7827742908
Loaded clojure/core/match/debug__init in 3637116 ns, total: 7831380024
Loaded clojure/core/match/regex__init in 3910189 ns, total: 7835290213
Loaded babashka/impl/match__init in 147253107 ns, total: 7982543320
Loaded hiccup/util__init in 10783253 ns, total: 7993326573
Loaded hiccup/compiler__init in 28472779 ns, total: 8021799352
Loaded babashka/impl/hiccup__init in 35807479 ns, total: 8057606831
Loaded clojure/test/check/random__init in 12584954 ns, total: 8070191785
Loaded clojure/test/check/rose_tree__init in 6288918 ns, total: 8076480703
Loaded clojure/test/check/generators__init in 48106770 ns, total: 8124587473
Loaded clojure/test/check/results__init in 3317410 ns, total: 8127904883
Loaded clojure/test/check/properties__init in 7805806 ns, total: 8135710689
Loaded clojure/test/check/impl__init in 2529682 ns, total: 8138240371
Loaded clojure/test/check__init in 7379721 ns, total: 8145620092
Loaded babashka/impl/clojure/test/check__init in 129388881 ns, total: 8275008973
Loaded rewrite_clj/interop__init in 2498529 ns, total: 8277507502
Loaded rewrite_clj/node/protocols__init in 20951064 ns, total: 8298458566
Loaded rewrite_clj/node/comment__init in 26036303 ns, total: 8324494869
Loaded rewrite_clj/node/fn__init in 4530210 ns, total: 8329025079
Loaded rewrite_clj/node/forms__init in 2688432 ns, total: 8331713511
Loaded rewrite_clj/node/integer__init in 6646383 ns, total: 8338359894
Loaded rewrite_clj/node/keyword__init in 4082070 ns, total: 8342441964
Loaded rewrite_clj/reader__init in 7917604 ns, total: 8350359568
Loaded rewrite_clj/node/whitespace__init in 20315724 ns, total: 8370675292
Loaded rewrite_clj/node/meta__init in 25374475 ns, total: 8396049767
Loaded rewrite_clj/node/namespaced_map__init in 5207504 ns, total: 8401257271
Loaded rewrite_clj/node/quote__init in 4171430 ns, total: 8405428701
Loaded rewrite_clj/node/reader_macro__init in 5974037 ns, total: 8411402738
Loaded rewrite_clj/node/regex__init in 3092149 ns, total: 8414494887
Loaded rewrite_clj/node/seq__init in 6014108 ns, total: 8420508995
Loaded rewrite_clj/node/stringz__init in 4236586 ns, total: 8424745581
Loaded rewrite_clj/node/token__init in 7732033 ns, total: 8432477614
Loaded rewrite_clj/node/uneval__init in 3743284 ns, total: 8436220898
Loaded rewrite_clj/node/coercer__init in 177113048 ns, total: 8613333946
Loaded rewrite_clj/node/extras__init in 4372325 ns, total: 8617706271
Loaded rewrite_clj/node__init in 202860131 ns, total: 8820566402
Loaded clojure/zip__init in 14304510 ns, total: 8834870912
Loaded rewrite_clj/custom_zipper/switchable__init in 2874638 ns, total: 8837745550
Loaded rewrite_clj/custom_zipper/core__init in 32688868 ns, total: 8870434418
Loaded rewrite_clj/custom_zipper/utils__init in 40133086 ns, total: 8910567504
Loaded rewrite_clj/parser/keyword__init in 2283433 ns, total: 8912850937
Loaded rewrite_clj/parser/namespaced_map__init in 3921083 ns, total: 8916772020
Loaded rewrite_clj/parser/string__init in 4039455 ns, total: 8920811475
Loaded rewrite_clj/parser/token__init in 4503994 ns, total: 8925315469
Loaded rewrite_clj/parser/whitespace__init in 2856845 ns, total: 8928172314
Loaded rewrite_clj/parser/core__init in 38809788 ns, total: 8966982102
Loaded rewrite_clj/parser__init in 43937364 ns, total: 9010919466
Loaded rewrite_clj/zip/whitespace__init in 5522254 ns, total: 9016441720
Loaded rewrite_clj/zip/base__init in 60325004 ns, total: 9076766724
Loaded rewrite_clj/zip/move__init in 5602962 ns, total: 9082369686
Loaded rewrite_clj/zip/removez__init in 11574936 ns, total: 9093944622
Loaded rewrite_clj/zip/editz__init in 16052782 ns, total: 9109997404
Loaded rewrite_clj/zip/findz__init in 6656269 ns, total: 9116653673
Loaded rewrite_clj/zip/insert__init in 3857039 ns, total: 9120510712
Loaded rewrite_clj/zip/seqz__init in 39327488 ns, total: 9159838200
Loaded rewrite_clj/zip/subedit__init in 5236817 ns, total: 9165075017
Loaded rewrite_clj/zip/walk__init in 9460247 ns, total: 9174535264
Loaded rewrite_clj/zip/context__init in 53714784 ns, total: 9228250048
Loaded rewrite_clj/zip__init in 140254651 ns, total: 9368504699
Loaded rewrite_clj/paredit__init in 196668075 ns, total: 9565172774
Loaded babashka/impl/rewrite_clj__init in 408766776 ns, total: 9973939550
Loaded babashka/impl/clojure/main__init in 1961965 ns, total: 9975901515
Loaded babashka/impl/classpath__init in 9577000 ns, total: 9985478515
Loaded selmer/util__init in 9596405 ns, total: 9995074920
Loaded selmer/filters__init in 25537916 ns, total: 10020612836
Loaded selmer/filter_parser__init in 5203656 ns, total: 10025816492
Loaded selmer/tags__init in 28619658 ns, total: 10054436150
Loaded selmer/validator__init in 38300940 ns, total: 10092737090
Loaded selmer/template_parser__init in 50176959 ns, total: 10142914049
Loaded selmer/parser__init in 64735892 ns, total: 10207649941
Loaded babashka/impl/selmer__init in 116269588 ns, total: 10323919529
Loaded babashka/impl/features__init in 2010039642 ns, total: 12333959171
Loaded babashka/impl/classes__init in 2050117465 ns, total: 14384076636
Loaded babashka/impl/common__init in 2547280 ns, total: 14386623916
Loaded babashka/impl/clojure/core__init in 35486162 ns, total: 14422110078
Loaded babashka/impl/clojure/core/server__init in 8562936 ns, total: 14430673014
Loaded clojure/java/shell__init in 5841453 ns, total: 14436514467
Loaded babashka/impl/clojure/java/browse__init in 9839776 ns, total: 14446354243
Loaded babashka/impl/clojure/java/io__init in 10831997 ns, total: 14457186240
Loaded babashka/impl/clojure/java/shell__init in 5045729 ns, total: 14462231969
Loaded clojure/stacktrace__init in 4268995 ns, total: 14466500964
Loaded babashka/impl/clojure/stacktrace__init in 9235606 ns, total: 14475736570
Loaded babashka/impl/clojure/zip__init in 15912957 ns, total: 14491649527
Loaded babashka/curl__init in 8245361 ns, total: 14499894888
Loaded babashka/impl/curl__init in 16697236 ns, total: 14516592124
Loaded babashka/impl/clojure/data__init in 9899468 ns, total: 14526491592
Loaded babashka/impl/data__init in 14402724 ns, total: 14540894316
Loaded babashka/impl/protocols__init in 4754697 ns, total: 14545649013
Loaded babashka/impl/datafy__init in 13909489 ns, total: 14559558502
Loaded babashka/process__init in 12392579 ns, total: 14571951081
Loaded borkdude/deps__init in 11243484 ns, total: 14583194565
Loaded babashka/impl/deps__init in 31826534 ns, total: 14615021099
Loaded sci/impl/callstack__init in 3451541 ns, total: 14618472640
Loaded babashka/impl/error_handler__init in 8866343 ns, total: 14627338983
Loaded babashka/impl/fs__init in 33789910 ns, total: 14661128893
Loaded babashka/pods/impl/resolver__init in 7918860 ns, total: 14669047753
Loaded babashka/pods/impl__init in 23230233 ns, total: 14692277986
Loaded babashka/pods/sci__init in 29549827 ns, total: 14721827813
Loaded babashka/impl/pods__init in 35779895 ns, total: 14757607708
Loaded babashka/impl/pprint__init in 8148823 ns, total: 14765756531
Loaded babashka/impl/process__init in 6515567 ns, total: 14772272098
Loaded babashka/impl/proxy__init in 2203800 ns, total: 14774475898
Loaded babashka/impl/reify__init in 2359311 ns, total: 14776835209
Loaded babashka/impl/repl__init in 3349128 ns, total: 14780184337
Loaded babashka/impl/socket_repl__init in 2743286 ns, total: 14782927623
Loaded babashka/impl/tasks__init in 15477716 ns, total: 14798405339
Loaded clojure/template__init in 2988952 ns, total: 14801394291
Loaded babashka/impl/clojure/test__init in 26050728 ns, total: 14827445019
Loaded babashka/impl/test__init in 37069625 ns, total: 14864514644
Loaded clojure/tools/cli__init in 17422322 ns, total: 14881936966
Loaded babashka/impl/tools/cli__init in 24204398 ns, total: 14906141364
Loaded babashka/nrepl/impl/utils__init in 4646032 ns, total: 14910787396
Loaded babashka/nrepl/impl/server__init in 13090698 ns, total: 14923878094
Loaded babashka/nrepl/server__init in 18156079 ns, total: 14942034173
Loaded babashka/wait__init in 2922866 ns, total: 14944957039
Loaded hf/depstar/uberjar__init in 10180001 ns, total: 14955137040
Loaded sci/addons/future__init in 2861216 ns, total: 14957998256
Loaded sci/addons__init in 8893507 ns, total: 14966891763
Loaded babashka/impl/pipe_signal_handler__init in 2534918 ns, total: 14969426681
Loaded babashka/impl/sigint_handler__init in 1640477 ns, total: 14971067158
Loaded babashka/main__init in 3248679974 ns, total: 18219747132
6
java -cp classes:$(clojure -Spath) babashka.main -e '(+ 1 2 3)' 7.64s user 0.99s system 200% cpu 4.318 total
From f760d049bf43ac753e04563f87bce973f86eb2b5 Mon Sep 17 00:00:00 2001
From: Michiel Borkent <michielborkent@gmail.com>
Date: Thu, 1 Jul 2021 12:08:00 +0200
Subject: [PATCH] wip
---
src/jvm/clojure/lang/Compiler.java | 13 ++++++++++++-
src/jvm/clojure/lang/RT.java | 21 +++++++++++++++++++++
2 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java
index 041786e8..46c9bd8a 100644
--- a/src/jvm/clojure/lang/Compiler.java
+++ b/src/jvm/clojure/lang/Compiler.java
@@ -4606,16 +4606,19 @@ static public class ObjExpr implements Expr{
GeneratorAdapter clinitgen = new GeneratorAdapter(ACC_PUBLIC + ACC_STATIC,
Method.getMethod("void <clinit> ()"),
null,
null,
cv);
clinitgen.visitCode();
clinitgen.visitLineNumber(line, clinitgen.mark());
+ // clinitgen.push(internalName);
+ // clinitgen.invokeStatic(RT_TYPE, Method.getMethod("void beginTime(String)"));
+
if(constants.count() > 0)
{
emitConstants(clinitgen);
}
if(keywordCallsites.count() > 0)
emitKeywordCallsites(clinitgen);
@@ -4657,16 +4660,19 @@ static public class ObjExpr implements Expr{
clinitgen.checkCast(IFN_TYPE);
clinitgen.push(nsname);
clinitgen.invokeStatic(SYMBOL_TYPE, Method.getMethod("clojure.lang.Symbol create(String)"));
clinitgen.invokeInterface(IFN_TYPE, Method.getMethod("Object invoke(Object)"));
clinitgen.pop();
}
}
+ // clinitgen.push(internalName);
+ // clinitgen.invokeStatic(RT_TYPE, Method.getMethod("void endTime(String)"));
+
clinitgen.returnValue();
clinitgen.endMethod();
//end of class
cv.visitEnd();
bytecode = cw.toByteArray();
@@ -7861,17 +7867,19 @@ public static Object compile(Reader rdr, String sourcePath, String sourceName) t
Label endTry = clinitgen.newLabel();
Label end = clinitgen.newLabel();
Label finallyLabel = clinitgen.newLabel();
// if(objx.constants.count() > 0)
// {
// objx.emitConstants(clinitgen);
// }
- for(int n = 0;n<numInits;n++)
+ clinitgen.push(objx.internalName);
+ clinitgen.invokeStatic(RT_TYPE, Method.getMethod("void beginTime(String)"));
+ for(int n = 0;n<numInits;n++)
clinitgen.invokeStatic(objx.objtype, Method.getMethod("void __init" + n + "()"));
clinitgen.push(objx.internalName.replace('/','.'));
clinitgen.invokeStatic(RT_TYPE, Method.getMethod("Class classForName(String)"));
clinitgen.invokeVirtual(CLASS_TYPE,Method.getMethod("ClassLoader getClassLoader()"));
clinitgen.invokeStatic(Type.getType(Compiler.class), Method.getMethod("void pushNSandLoader(ClassLoader)"));
clinitgen.mark(startTry);
clinitgen.invokeStatic(objx.objtype, Method.getMethod("void load()"));
@@ -7881,16 +7889,19 @@ public static Object compile(Reader rdr, String sourcePath, String sourceName) t
clinitgen.mark(finallyLabel);
//exception should be on stack
clinitgen.invokeStatic(VAR_TYPE, Method.getMethod("void popThreadBindings()"));
clinitgen.throwException();
clinitgen.mark(end);
clinitgen.visitTryCatchBlock(startTry, endTry, finallyLabel, null);
+ clinitgen.push(objx.internalName);
+ clinitgen.invokeStatic(RT_TYPE, Method.getMethod("void endTime(String)"));
+
//end of static init
clinitgen.returnValue();
clinitgen.endMethod();
//end of class
cv.visitEnd();
writeClassFile(objx.internalName, cw.toByteArray());
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java
index 74399cf1..516d3d36 100644
--- a/src/jvm/clojure/lang/RT.java
+++ b/src/jvm/clojure/lang/RT.java
@@ -8,17 +8,19 @@
* You must not remove this notice, or any other, from this software.
**/
/* rich Mar 25, 2006 4:28:27 PM */
package clojure.lang;
import java.net.MalformedURLException;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.Callable;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.*;
import java.lang.reflect.Array;
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -2388,10 +2390,29 @@ static public Object aset(Object[] xs, int i, Object v){
static public int alength(Object[] xs){
return xs.length;
}
static public Object[] aclone(Object[] xs){
return xs.clone();
}
+static final ConcurrentHashMap<String, Long> timer = new ConcurrentHashMap<>();
+
+static AtomicLong total = new AtomicLong(0);
+
+static public void beginTime(String clazz) {
+ if(timer != null) {
+ timer.put(clazz, System.nanoTime());
+ }
+}
+
+static public void endTime(String clazz) {
+ if(timer != null) {
+ long end = System.nanoTime();
+ long begin = timer.remove(clazz);
+ long diff = end - begin;
+ long currentTotal = total.addAndGet(diff);
+ System.out.println("Loaded " + clazz + " in " + diff + " ns" + ", total: " + currentTotal);
+ }
+}
}
--
2.26.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment