Hello,

> Has there been any thought about optimizer?

A lot. And a lot of discussions with people who
know a lot more than I do in this specific area
of wisdom. The final judgment is as it is: for
an ITC forth there are only very few possibilities.

One is a statistical analysis to find code sequences
that are worth combining into one command. e.g.
"dup if" can be combined to a dup-if that avoids
the stack duplication and makes the flag check 
non-destructive (does not drop the Top-Of-Stack 
element). This will be both faster and smaller in
the resulting code.

The downside is that you'll need a real large number
of such words, that nobody with his right mind would 
ever consider to use. And these words do need code 
space. It is possible, to combine this with the
build process of amforth. Here you can include
tailored word sets that perfectly match your other
forth code needs. On the host side, you can have any
amount of ressources to optimize the result ;)

For a forth with a real code generator (e.g. the
"competitive" flashforth) there are many more
possibilities to optimize the resulting code. This
optimization works on the resulting machine
code, not at the forth level.

The next difficulty is that an optimizer needs code
space itself. For a host-based forth this should not
be a problem at all, but an already size restrained
system could be troublesome. The optimizer may save
say 200 cells of code space and need 300 cell itself.

The only solution would be the already mentioned 
preprocessor that works on the forth code on the 
host and generates other, optimized forth code or
even a specialized amforth system that goes to the 
controller. Something the shell already does
with its inline replacements of constants with their 
numbers. 

To answer the OP question:

Arduino Sketches are probably always faster than amforth
code. Depending of the benchmark (synthetic loops that
stupidly count numbers) there may be a factor of 1:100 or
more. 

Amforth has other strengths, IMHO ;) It is probably
the smallest text interpreter (try to write such a 
thing in arduino sketch and beat the 8KB code space).

Number-IO and formatting is another nice thing. I've seen 
quite a few sketches that read some data from the analog 
ports and try to print them to the serial port. What did 
I smile about them.

Matthias
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Amforth-devel mailing list for http://amforth.sf.net/
Amforth-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/amforth-devel

Reply via email to