Part of my problem is my reasoning tells me I can't precompile all code because this is evolutionary code - there is no way for the compiler to know what it is going to do before it does it.
As I understand it (and I'll admit I only gave your code a cursory glance), your building blocks are constant, only the order in which they are called is not.
Therefore, the basic blocks (sin, add, etc) need only be compiled once, while your dynamic tree handles the execution path.
By the way, that's very similar to how perl executes a Perl program. The program is parsed into a tree made from basic building blocks named opcodes. Perl then navigates that tree.
>perl -MO=Terse -e"my $x = qq{Hello World\n}; print($x);" LISTOP (0x1985394) leave [1] OP (0x19852bc) enter COP (0x19853b8) nextstate BINOP (0x19853f4) sassign SVOP (0x1985418) const [3] PV (0x225eac) "Hello World\n" OP (0x1985498) padsv [1] COP (0x19852fc) nextstate LISTOP (0x1985354) print OP (0x1985338) pushmark OP (0x1985378) padsv [1] -e syntax OK
In reply to Re^5: optimization help
by ikegami
in thread optimization help
by GSF
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |