<div dir="ltr"><div><div><div><div>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.</div><div><br></div><div>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".<br></div><div><br></div><div>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]].</div><div><br></div></div>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.<br></div>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.</div><div><br></div><div>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.<br></div><div><div><div><br>Please report any issues here:<br><a href="https://github.com/x37v/jit-expr/issues">https://github.com/x37v/jit-expr/issues</a></div><div><br></div><div><br></div><div>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.<br></div><div><br></div><div><br></div><div>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.</div><div><br></div><div><div>The source code can be found in the git repo:<br></div><div><a href="https://github.com/x37v/jit-expr">https://github.com/x37v/jit-expr</a><br></div></div><div><br></div><div>-Alex Norman<br></div></div></div></div>