Hacker News new | ask | show | jobs
by ch4s3 10 days ago
It’s pretty hard to make things like math faster for real world use cases in a bytecode interpreter.
3 comments

It's a JIT nowadays. Admittedly an extremely simple one, to minimize compile times and maintenance overhead.

You can get substantial performance improvements by using guards though. See what Wings3D does with is_float() everywhere in hot numeric-heavy code.

Can you elaborate why adding guards makes things faster?
Presumably it gives the JIT more type information, parent example was specifically about one of the type-check functions you can use for guards (is_float). While running it'll use the is_float information to generate code for the float case, and bail out if the actual values fail the guards at runtime.

Other JITS like V8 will do things like speculative inlining and inserting its own type guards , but if this JIT is "Admittedly an extremely simple one" then it presumably doesn't do much of that.

i ran a quick experiment where instead of doing boxing the way its done in the beam currently, i used a different boxing (NaN strategy and there was a 10x speedup
Is that translates to real workloads you should open a pr.
oh, I didn't recognize your username here! It's been ages since I've seen you. Hope you'll be in Chicago in September.
i will not, sorry. but ill probably be at exmex
I’ll have to come up for the NYC meetup.
exmex is in texas, youre probably thinking of empex
Java and Javascript run times do really well at that.