jit_expr is a clone of the pure data expr/expr~/fexpr~ objects. It just-in-time compiles its expressions so they should be much more optimized than the original. If all works as designed, they should use less CPU than the equivalent vanilla, non-expr, patching and have a significant CPU advantage over the original expr objects.
I've put the external, compiled for 64-bit Mac-OS and 64-bit Linux, up on deken: in pd, go to help menu, find externals, search for "jit_expr".
After installing the external you should be able to change any of your expr family of objects to just in time compile by loading the library, [declare -lib jit_expr], and then prefixing the object name with "jit/", for example [jit/fexpr~ $x1[0] + $y1[-1]].
I believe they are feature complete with the originals but I'd love to know if there is anything that I'm missing or any bugs that you discover. I'm not exactly sure how to profile pure data patches. If anyone has a good approach or original expr~/fexpr~ patches that use a lot of CPU you can share, let me know.
Compiling in the object takes a little bit of time, so the initial instantiation of the object/expression will be a bit slower than the original, FYI.
Please report any issues here: https://github.com/x37v/jit-expr/issues
BTW, if you're curious to see the llvm assembly produced by your expression, send the |print( message into the left most inlet of your object then check out the pd console.
I would love help building Windows and 32-bit Linux versions of the externals. I'm guessing we could also do raspi/arm builds but we'd need some changes to the source code as it uses llvm and explicitly generates code for x86 right now.
The source code can be found in the git repo: https://github.com/x37v/jit-expr
-Alex Norman