Top all-time · #4096
Nicholas Kariniemi
Personal blog · blog.ndk.ioprogramming
Nicholas Kariniemi's personal blog at blog.ndk.io covers programming. Since 2015, 19 different Hacker News readers have linked it 29 times, most often “The (Clojure) "JVM Slow Startup Time" Myth”. The last post was in 2018, but the archive is still widely read.
Too few sampled comments (13) to say how often HN recommends it.?
Why HN links it
Linked mainly as a reference on why Clojure and JVM programs start slowly, with one commenter calling a post on Clojure load times on Android a good read.
Summarised by Claude from a sample of 13 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- /jvm-slow-startup.html3 people · 8 mentions · first linked 2016-01-20
- /2014/02/11/jvm-slow-startup.html3 people · 5 mentions · first linked 2015-06-10
- /clojure-bootstrapping.html3 people · 3 mentions · first linked 2018-07-20
- /clojure-bootstrapping.html2 people · 2 mentions · first linked 2016-01-20
- The (Clojure) "JVM Slow Startup Time" Myth2 people · 2 mentions · first linked 2019-03-24
- The state of Clojure on Android2 people · 2 mentions · first linked 2015-04-25
What Hacker News says?
Yeah, I remember seeing The (Clojure) "JVM Slow Startup Time" Myth [1] in HN comments last week. [1]: http://blog.ndk.io/2014/02/11/jvm-slow-startup.html
Comment linking /2014/02/11/jvm-slow-startup.html
on “Larry Wall Unveils Perl 6.0.0”Submitted Clojure Compilation: Parenthetical Prose to Bewildering Bytecode (2014) as a story · 93 points
HN discussionWell, if you create a lot of additional objects on startup then it will take some time. JVM startup is still fast. http://blog.ndk.io/jvm-slow-startup.html
Comment linking /jvm-slow-startup.html
on “The JVM is not that heavy”Submitted Clojure Compilation (2014) as a story · 60 points
HN discussionIt is Clojure. It loads an additional runtime by itself. It is unfortunately not usable for CLI applications. Pure Java does the same thing in fraction of time. http://blog.ndk.io/jvm-slow-startup.html
Comment linking /jvm-slow-startup.html
on “The JVM is not that heavy”Submitted The state of Clojure on Android as a story · 55 points
HN discussionAnother reason is that is doesn't do all the things that standard Clojure does, which are the actual cause for slowness, it is not the JVM. http://blog.ndk.io/2014/02/11/jvm-slow-startup.html
Comment linking /2014/02/11/jvm-slow-startup.html
on “ClojureScript Year in Review”Submitted Why CSP matters I: Keeping things in sync as a story · 5 points
HN discussionDon't blame the JVM for what it is a Clojure implementation problem. http://blog.ndk.io/jvm-slow-startup.html http://martinsprogrammingblog.blogspot.de/2012/02/why-is-clo... If you program directly in Java it can be as fast as Nim or Go. Granted, if you want AOT to native code, your only option is a commercial JVM.
Comment linking /jvm-slow-startup.html
on “Clojure 1.8”Submitted Why csp matters as a story · 3 points
HN discussionHere is the reason for the slow startup time. This is also why AOT compilation does not solve it. http://martinsprogrammingblog.blogspot.de/2012/02/why-is-clo... “[It] spends 95% of the startup-time loading the clojure.core namespace (the clojure.lang.RT class in particular) and filling out all the metadata/docstrings etc for the methods. This process stresses the GC quite a bit, some 130k objects are allocated and…
Comment linking /clojure-bootstrapping.html
on “Clojure 1.8”Submitted The (Clojure) "JVM Slow Startup Time" Myth as a story · 2 points
HN discussionYes, it's fun. I wrote a wrapper for playing Screeps with PureScript and a blog post about it here: http://blog.ndk.io/purescript-ffi.html .
Comment linking /purescript-ffi.html
on “Screeps – An MMO strategy sandbox game for programmers”> Try googling "jvm slow startup". Its slow because a bare bones hello world takes 40ms in Java instead of 1ms in C. Its "slow" relative to other languages, but its not really that slow over all. I can use mvn without noticing that its slow, but leiningen takes multiple seconds to run a command. Take a look at this image, taken from the link pjmlp posted: http://blog.ndk.io/img/jvm_vs_clojure.svg Note that the Cloju…
Comment linking /img/jvm_vs_clojure.svg
on “Closh – Bash-like shell based on Clojure”First of all, there are AOT native compilers for Java, making as fast to start as any other native compiled language. Second, it is a well known fact in the Clojure community since several years, that the blame lies in Clojure itself. http://blog.ndk.io/jvm-slow-startup.html https://dev.clojure.org/display/design/Improving+Clojure+Sta...
Comment linking /jvm-slow-startup.html
on “Closh – Bash-like shell based on Clojure”Which is a Clojure problem, Java doesn't suffer from it. https://blog.ndk.io/jvm-slow-startup.html
Comment linking /jvm-slow-startup.html
on “Replete 2.0: ClojureScript REPL for iOS and Android”Briefly, the JVM starts very quickly. Most of the time is spent loading the clojure.core namespace. See http://blog.ndk.io/jvm-slow-startup.html
Comment linking /jvm-slow-startup.html
on “JavaCPP”This high startup time in Clojure is a side-effect of the JVM. If you have a hello world program that does nothing it is indeed fast. If you are running Clojure you need to run at least clojure.core. Loading that is handled - surprise - by the JVM. As would be expected, if you run other implementations (like Dalvik), this can change dramatically (for worse, usually). So it is correct that loading the JVM itself is n…
Comment linking /clojure-bootstrapping.html
on “Using Clojure in the command line with Babashka”> compiler took forever to start because of JVM No, because of Clojure itself. It is time for people to stop spreading this. http://blog.ndk.io/2014/02/11/jvm-slow-startup.html
Comment linking /2014/02/11/jvm-slow-startup.html
on “LispyScript”Blame Clojure's implementation. The (Clojure) "JVM Slow Startup Time" Myth http://blog.ndk.io/jvm-slow-startup.html
Comment linking /jvm-slow-startup.html
on “Macchiato – A way to build Node web applications using ClojureScript”Not it is not, blame Clojure implementation. The (Clojure) "JVM Slow Startup Time" Myth http://blog.ndk.io/jvm-slow-startup.html
Comment linking /jvm-slow-startup.html
on “Macchiato – A way to build Node web applications using ClojureScript”The JVM startup is quite fast, and it can be made even faster when using a JVM that supports AOT compilation to native code. Slow startup of Clojure's code, it's Clojure own doing. The (Clojure) "JVM Slow Startup Time" Myth - http://blog.ndk.io/jvm-slow-startup.html
Comment linking /jvm-slow-startup.html
on “Macchiato – A way to build Node web applications using ClojureScript”The JVM isn't actually slow to start [1] (albeit it does start about 3x-4x slower than python, ruby, or node) [2]. Most of the slow startup in a JVM-based application is in classloading [3] or waiting for your chosen framework to initialize [4] before the control is handed to your custom code. [1] https://purelyfunctional.tv/article/the-legend-of-long-jvm-s... [2] https://dev.clojure.org/display/design/Improving+Clo…
Comment linking /clojure-bootstrapping.html
on “How Four Native Developers Wrote an Electron App”Clojure startup time is only partly related to JVM startup time, which is ~60ms[1][2]. The reason Clojure startup is slow is because Clojure requires a very elaborate initialization. OTOH, the Erlang VM (BEAM) is much, much, much slower than the JVM (Hotspot, at least). [1]: https://blog.ndk.io/clojure-bootstrapping.html [2]: http://clojure-goes-fast.com/blog/clojures-slow-start/
Comment linking /clojure-bootstrapping.html
on “Command-line apps with Clojure and GraalVM: 300x better startup times”No, it is because Clojure is badly implemented. Don't blame the JVM for Clojure's quality of implementation. http://blog.ndk.io/2014/02/11/jvm-slow-startup.html
Comment linking /2014/02/11/jvm-slow-startup.html
on “ClojureScript on Android”It's not just the JVM, clojure itself takes a while to set itself up http://blog.ndk.io/2014/03/12/clojure-android-startup-benchm...
Comment linking /2014/03/12/clojure-android-startup-benchmarks.html
on “ClojureScript on Android”http://blog.ndk.io/2014/02/11/jvm-slow-startup.html 40ms sounds okay for me, even for most command line tools. Oh and I most probably don't get a segmentation fault ;-)
Comment linking /2014/02/11/jvm-slow-startup.html
on “A persistent key-value server in 40 lines and a sad fact (2014)”Were you perhaps talking about this article [0]? If not, it's a good read about the state of Project Skummet and improving Clojure load times on Android. [0]: http://blog.ndk.io/2015/04/23/state-of-coa.html
Comment linking /2015/04/23/state-of-coa.html
on “Show HN: Effective java – A tool to explore your Java code written in Clojure”> There are, however, a few drawbacks to the Java virtual machine, which Clojure traditionally runs on. From my experience, many developers, fairly or not, have an issue with requiring the JVM, and shy away from Clojure because of startup time, a somewhat heavyweight runtime, and perceived bootstrapping complexity. This used to be discussed in the past and it has been proven that the culprit is the clojure implement…
Comment linking /clojure-bootstrapping.html
on “Clojure in the age of language models”