Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 10 of 12 total
Thread Update on EWB 3.x - Feb 2019
Mon, Feb 11 2019 2:48 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

My apologies on there not being updates for a while.  Where we're at:

I started testing the server-side applications in anger in late December/ early January, and the performance of the EWB interpreter was just not that great.  It was especially bad at large numbers of small computations like tight loops with millions or 1 billion iterations. So, while the interpreter has worked okay in the EWB IDE for design-time usage, I didn't consider it performant enough for general-purpose usage.  For example, a simple loop like this:

project WhileTest;

var
  I: Integer;
begin
  I:=0;
  while (I < 1000000000) do
     I:=I+1;
end.

would take ~22 secs in PHP (5.6), ~110 secs in Python, and ~740 seconds in EWB (this excludes startup time and only measures the execution time of the main code block).

The current EWB interpreter that is in EWB 2.x is an AST (Abstract Syntax Tree)-walker where it simply iterates over the token nodes and evaluates them.  The execution overhead with such an architecture is/was just too much, resulting in the poor performance.  At the very least, I deemed it necessary for the EWB interpreter to be *at least* as fast as PHP 5.x.

A month ago I started working on a new interpreter for EWB 3, and I'm finishing it up this week.  In comparison to the above figures, the new EWB 3 interpreter takes ~11 secs to execute the 1 billion iteration loop above, so it's around twice as fast as PHP 5.x, right around the same performance as PHP 7.x (estimated), and 10 times faster than Python with simple, raw loops that don't do much, which is a fairly good measure of the overhead of the interpreter.

Another test I ran was populating a 10 million element string array using a user function, in order to get an idea of the function call overhead:

project ForArrayTest;

function UserIntToStr(Value: Integer): String;
begin
  Result:=IntToStr(Value);
end;

var
  I: Integer;
  TempStrings: array of String;
begin
  SetLength(TempStrings,10000000);
  for I:=0 to 9999999 do
     TempStrings[I]:=UserIntToStr(I);
end.;

This can execute in ~1700 msecs, while native Delphi clocks in at ~570 msecs.

So, once I finish up the new EWB 3 interpreter, I will be then be completing work on the rest of the runtime library and components for server-side applications and can release a beta.

Right now it looks like the end of March for such a beta release.

If you have any questions/comments, please feel free to post them in response.

Tim Young
Elevate Software
www.elevatesoft.com
Mon, Feb 11 2019 5:45 PMPermanent Link

Steve Gill

Avatar

Hi Tim,

That's a very impressive increase in performance!

Will the initial release of EWB3 include the IDE improvements, eg. code insight?

Thanks for all your hard work! Smile

= Steve
Tue, Feb 12 2019 3:55 AMPermanent Link

Matthew Jones

Tim Young [Elevate Software] wrote:

> I started testing the server-side applications in anger in late December/ early January, and the performance of the EWB interpreter was just not that great.  

I was going to say don't hold off - I doubt that matters for most users of the product, and it can be addressed later. But obviously you have done very well in a short time to get it so good. Looking forward to it.


--

Matthew Jones
Tue, Feb 12 2019 6:37 AMPermanent Link

Mark Brooks

Slikware

Avatar

Literally, can't wait to have a play with this.
Tue, Feb 12 2019 12:27 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Matthew,

<< I was going to say don't hold off - I doubt that matters for most users of the product, and it can be addressed later. But obviously you have done very well in a short time to get it so good. >>

There were a few issues that I was grappling with:

- I didn't want to get EWB 3 released and then have to backtrack and lose momentum.  I want to keep moving forward after EWB 3 with the code editor improvements and other enhancements.

- I finally figured out a way to do a fast, portable interpreter in a short period of time, so the issue of time became less of an issue, relative to the long delays that have already been taking place.

- I want to use the interpreter for other things.  I can't really say any more than that at this point because this is all vaporware talk, but I would be starting with the EWB IDE and the EDB/DBISAM utilities.

Tim Young
Elevate Software
www.elevatesoft.com
Tue, Feb 12 2019 12:31 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Steve,

<< Will the initial release of EWB3 include the IDE improvements, eg. code insight? >>

No, nothing there initially.  I need to do some work on the compiler to support incremental/background compilation, and I'd like to make it language server-compatible:

https://langserver.org/

Eventually, I'm picturing a situation where the EWB IDE uses the EWB interpreter for its UI functionality, with the designer, compiler, editor, etc. relegated to native code interfaces that the UI calls.  It's nice and clean, and will make it so that I can possibly release the IDE source code and customers can iterate/improve upon it, if they find it necessary.

Tim Young
Elevate Software
www.elevatesoft.com
Wed, Feb 13 2019 1:02 AMPermanent Link

Eivind

Awesome!

Could I hope for horizontal scrolling? Smile

That would really be great on the timeline schedule project Im working on now

Eivind
Wed, Feb 13 2019 4:54 PMPermanent Link

Steve Gill

Avatar

Hi Tim,

<< Tim Young [Elevate Software] wrote: >>

<< Steve, >>

<<<< Will the initial release of EWB3 include the IDE improvements, eg. code insight? >>>>

<< No, nothing there initially.  I need to do some work on the compiler to support incremental/background compilation, and I'd like to make it language server-compatible:

<< https://langserver.org/  >>

Ok.  I'm really looking forward to the IDE improvements because it will increase productivity a lot.

<< Eventually, I'm picturing a situation where the EWB IDE uses the EWB interpreter for its UI functionality, with the designer, compiler, editor, etc. relegated to native code interfaces that the UI calls.  It's nice and clean, and will make it so that I can possibly release the IDE source code and customers can iterate/improve upon it, if they find it necessary.  >>

So I'm guessing that means we could create our own IDE tools, eg. source code formatting, code templates?

= Steve
Fri, Feb 22 2019 2:38 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Eivind,

<< Could I hope for horizontal scrolling? Smile>>

I can certainly look into adding it quickly after the beta is completed.  Everything is just at a standstill (and has been for a while) while I'm getting this all completed, and I hate it, so I'm very eager to EWB progressing again.

Tim Young
Elevate Software
www.elevatesoft.com
Fri, Feb 22 2019 2:40 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Steve,

<< Ok.  I'm really looking forward to the IDE improvements because it will increase productivity a lot. >>

In the meantime, I've looked at improving the parsing/resolution phases of the compiler so that I might be able to get away without the incremental compilation.

<< So I'm guessing that means we could create our own IDE tools, eg. source code formatting, code templates? >>

Yes, that's the general idea: allowing the IDE to be programmable, to a large degree.

Tim Young
Elevate Software
www.elevatesoft.com
Page 1 of 2Next Page
Jump to Page:  1 2
Image