This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2015-12-11
Channels
- # admin-announcements (26)
- # aws (1)
- # beginners (356)
- # boot (28)
- # cider (20)
- # clara (12)
- # cljs-dev (78)
- # cljsrn (22)
- # clojure (333)
- # clojure-brasil (1)
- # clojure-dev (15)
- # clojure-miami (1)
- # clojure-nl (3)
- # clojure-russia (61)
- # clojurecup (3)
- # clojurescript (137)
- # clojurex (4)
- # core-async (4)
- # data-science (3)
- # datavis (2)
- # datomic (31)
- # editors (1)
- # emacs (9)
- # hoplon (3)
- # juxt (8)
- # ldnclj (47)
- # leiningen (4)
- # luminus (4)
- # off-topic (20)
- # om (332)
- # onyx (1)
- # parinfer (23)
- # portland-or (4)
- # proton (161)
- # reagent (46)
- # ring-swagger (11)
- # specter (7)
- # yada (2)
Btw in 1.8 there is now clojure.string/starts-with? instead
In case anyone here is interested in some early tire-kicking, Rich just pushed a change to master to avoid interning unused constants in the static initializer. This is particularly useful for direct linking, but also possibly impacts other compiled classes as well. This seems to have good effects on both class size and startup time (due to reducing class load time).
we are still doing some testing on things before cutting an RC, but if anyone is interested, those changes are in the latest 1.8.0-master-SNAPSHOT release. see http://dev.clojure.org/display/community/Maven+Settings+and+Repositories for info on how to use a snapshot version from your project (you need to add an additional maven repo to find it)
I did some testing and can confirm it does remove all the unused keywords from keyword lookup sites and the unused boxed numbers in prim functions
it might have some weird side effects (a la CLJ-130) but it's probably a very remote possibility
IME the bloated constant pool clojure was emitting accounted for a significant chunk of startup time & classfile size
i.e. [^{:foo 1} [1] ^{:foo 2} [2]]
interns the foo keyword twice rather than once and store it in the local table
I think that could be solved by using a metadata table similar to the constant table, that only lives in the local table of <clinit>
but I'm not sure how hard it would be to implement
@alexmiller: I haven't kicked the tires as hard as bronsa, or with any significant code yet, but I see that AOT'd "Hello world" takes 13% less elapsed time, 9% less user+sys time, and 5% less max resident memory with the latest commit, as compared to before that commit.
yeah, that's pretty consistent with what I'm seeing