in reply to Re^4: optimization help
in thread optimization help

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

Replies are listed 'Best First'.
Re^6: optimization help
by GSF (Acolyte) on Oct 16, 2007 at 17:10 UTC
    YOU ROCK IKEGAMI!

    I'm goign to implement your suggestions if it kills me.