Fork me on GitHub
#planck
<
2020-02-03
>
pepas15:02:27

Hello! I have written some scripts to build planck in a debian buster chroot, for amd64 and i386. Here are the scripts and the resulting build artifacts: https://github.com/cellularmitosis/builds/tree/master/planck

pepas15:02:55

Interestingly, i386 performance is poor, and may be Debian-specific. It appears WebKit used SSE2 instructions in JavaScriptCore, which are not compatible with older i386 hardware. To work around this, Debian used the CLoop (non-JIT, non-ASM) interpreter in JavaScriptCore to avoid any SSE2 instructions.

pepas15:02:17

(I should say, startup performance is poor -- I haven't done any throughput benchmarks)

pepas15:02:45

On an Intel Atom 1.6GHz:

$ time planck -e '(+ 1 1)'
2

real	0m18.440s
user	0m18.913s
sys	0m0.342s

pepas15:02:15

Clojure startup performance on the same machine for comparison:

$ time clojure -e '(+ 1 1)'
2

real	0m7.902s
user	0m13.091s
sys	0m0.835s

pepas15:02:38

(note the better use of both cores by Java!)

mfikes15:02:25

It might be worth setting the JSC_useFTLJIT environment variable to true to see if it speeds things up.

pepas15:02:39

oh interesting, thanks!

pepas15:02:48

hmm, looks the same. Debian must have forced CLoop at build-time.

pepas15:02:39

building my own libjavascriptcore with SSE2 re-enabled would make an interesting comparison!

pepas15:02:41

I've also tried building lumo after discovering that node.js is still available on i386 as an "unofficial" build (lumo appears to use v8's heap snapshotting for faster startup), but I ran into trouble getting the yarn / npm dependencies to work.