Hi Enoch, On 12/19/2013 03:25 PM, Enoch wrote: > Hello AmForth-ers: > > I don't think that people look for speed when considering any Forth -- > modern optimizing C compilers will do better. > > Nevertheless, I think that we need to rid AmForth kernel ASAP of VM > instruction calls (those pesky XT_'s) and leave them for compiled code > output only. Let's start with a common construct such as the "do > ... loop" (words/do.asm).
What exactly are you trying to achieve? To be honest, in my eyes, amForth used to be a very simple system. minimal core written in assembly, rest written in Forth --- thats what the calls to XT_* amount to. This I can understand and modify. If all those "pesky XT_*" calls are replaced by assembly, then the simplicity for my eyes goes away. So, no, I'm not convinced that this gains anything I would prefer. I prefer code readability over speed. optimization: one round through the inner interpreter takes some 50 clock cycles. That is the figure I use. If I need anything faster than that, asm is called for. Happy hacking, Erich > It can be a group effort if Matthias encourages :-) > > Sincerely, Enoch. > > Matthias Trute <mtr...@web.de> writes: > >> 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 > > > ------------------------------------------------------------------------------ > 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 > ------------------------------------------------------------------------------ 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