First of all, thanks to everyone for their hard work on Clojurescript and related tooling. It’s an incredibly productive and reliable stack to use.
I’m investigating ways to speed up compile times for a closed-source project. We have about 8000 Clojurescript LOC and 200 Clojure LOC (in src and test combined). Some very rough indicators: a fresh compile of our test build takes about 60s. A small change to a file with maybe 15 reverse dependencies takes about 12s using `cljsbuild auto`. We are using lein-cljsbuild 1.1.4 and clojurescript “1.9.293”. These times are pretty good, but of course speeding up compiles shrinks our feedback loop, both locally and on CI, where we do a number of fresh compiles for different builds. As a result, we want to see if there are things we can do to our code to speed up compiles. We have turned on the `verbose` and `compiler-stats` flags so we can see more information about compile times. We hope to upgrade to 1.9.456 soon so we can see per-file compile stats. We also need to investigate parallel builds again - we had previously run into bugs here, but I didn’t take the time to investigate more fully. Besides total LOC, are there other aspects of code bases that are known to slow down compiles? Perhaps macro expansion (we have a lot of core.async `go` blocks in some namespaces)? Perhaps the complexity of the dependency graph between namespaces? Something else? Has anyone else had experience altering a CLJS code base to improve compile times? Or tweaking compiler flags? `optimization` makes a big difference of course, but for my current investigation, I'm ignoring optimization time. Also, I noticed that Clojurescript performance is an idea for the Google Summer of Code https://github.com/clojars/clojure-gsoc-2017/blob/master/project-ideas.md#clojurescript-performance “There are many impactful enhancements we would like to make to ClojureScript with respect to both runtime and compile time performance … For compile time enhancements we should examine where parallelization, AST data representation changes, or more aggressive caching of intermediate artifacts may deliver faster development and production build time.” I did a quick search of Clojurescript for perf issues on JIRA, but didn’t see anything related to these (apologies if I just missed something obvious!). Is there a list somewhere of open issues that might improve perf in the compiler? Or are those ideas mostly in the “needs investigation” stage? Thanks very much! Ben -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojurescript+unsubscr...@googlegroups.com. To post to this group, send email to clojurescript@googlegroups.com. Visit this group at https://groups.google.com/group/clojurescript.