Skip to content

Instantly share code, notes, and snippets.

@mfikes
Last active October 2, 2015 05:15
Show Gist options
  • Save mfikes/c7da1e7dfded26c7ceb9 to your computer and use it in GitHub Desktop.
Save mfikes/c7da1e7dfded26c7ceb9 to your computer and use it in GitHub Desktop.
Compare embedded JavaScriptCore and Node.js (iojs)

Since an embedded JavaScriptCore can be made to launch quickly, I've been pondering whether it is justified in converting Planck to be a portable (OS X, Linux, Windows) C-based wrapper around JavaScriptCore (so that it is more broadly useful). Right now Planck is not portable owing to the use of Cocoa/Foundation and Objective-C.

I think this partially boils down to wether the launch latency is faster than an equivalent based on Node.js (which is already portable and has a much richer ecosystem). That latency has to be significantly different, and I also think you'd need to be convinced that it is going to remain that way (perhaps V8 will be further optimized, but perhaps the outright launch speed of Node.js isn't a priority).

Here is my first attempt at a comparison, based on Joel Martin's work:

$ time echo '(map inc [1 2 3])' | cljs
cljs.user=> (map inc [1 2 3])
(2 3 4)
cljs.user=> 
real	0m0.826s
user	0m0.748s
sys	0m0.093s
$ time echo '(map inc [1 2 3])' | ~/Projects/planck/build/Release/planck
(2 3 4)

real	0m0.385s
user	0m0.492s
sys	0m0.087s
@jcw
Copy link

jcw commented Aug 12, 2015

There's also atom/electron to consider when it comes to wrapping everything up for easy deployment. It's a very different beast, but could be useful to clearly position Planck, I think.

@waffletower
Copy link

@mfikes iOS and OS X framework inter-op is a huge interest for many Clojure(script) developers.

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