Login ProductsSalesSupportDownloadsAbout |
Home » Technical Support » Elevate Web Builder Technical Support » Support Forums » Elevate Web Builder General » View Thread |
Messages 1 to 10 of 12 total |
Update on EWB 3.x - Feb 2019 |
Mon, Feb 11 2019 2:48 PM | Permanent Link |
Tim Young [Elevate Software] Elevate Software, Inc. 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 PM | Permanent Link |
Steve Gill | 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! = Steve |
Tue, Feb 12 2019 3:55 AM | Permanent 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 AM | Permanent Link |
Mark Brooks Slikware | Literally, can't wait to have a play with this.
|
Tue, Feb 12 2019 12:27 PM | Permanent Link |
Tim Young [Elevate Software] Elevate Software, Inc. 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 PM | Permanent Link |
Tim Young [Elevate Software] Elevate Software, Inc. 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 AM | Permanent Link |
Eivind | Awesome!
Could I hope for horizontal scrolling? That would really be great on the timeline schedule project I’m working on now Eivind |
Wed, Feb 13 2019 4:54 PM | Permanent Link |
Steve Gill | 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 PM | Permanent Link |
Tim Young [Elevate Software] Elevate Software, Inc. timyoung@elevatesoft.com | Eivind,
<< Could I hope for horizontal scrolling? >> 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 PM | Permanent Link |
Tim Young [Elevate Software] Elevate Software, Inc. 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 2 | Next Page » | |
Jump to Page: 1 2 |
This web page was last updated on Tuesday, September 17, 2024 at 04:19 AM | Privacy PolicySite Map © 2024 Elevate Software, Inc. All Rights Reserved Questions or comments ? E-mail us at info@elevatesoft.com |