TD runtime performance

General discussion forum about all things Gupta, OpenText and the community.
Dave Rabelink
Founder/Site Admin
Founder/Site Admin
Netherlands
Posts: 471
Joined: 24 Feb 2017, 09:12
Location: Gouda, The Netherlands

TD runtime performance

Post by Dave Rabelink » 02 Jun 2017, 10:52

I would like to query here what your observations are on the topic TD runtime performance.

Testing several versions (starting with TD5.x) up to TD7.x, some areas have been improved (eg table populates).
But for the core functionality (equals the stuff you use for business logic, no visuals) the performance has decreased.

When upgrading applications in smaller version steps, the degration could be less noticable, but when doing a larger jump, like from TD5 to TD7 the difference can be very noticable.

Now on TD70, the performance is decreased again, but IMHO even more noticable.
I converted a TD6.1 application to TD70 and see a clear difference in core speed. No DB access, no fancy GUI stuff, mainly business logic:
(eg searching data in arrays, comparing values etc etc). The feeling is about 1/3 to 1/2 the speeds we had in TD61.

I'm currently creating a small test application with core business logic and measure TD5.x up to TD7.0 to see what the real differences are.
I will post it here when ready.

But in the mean time I would like to ask you to comment about TD performance.

Personally I would like Gupta to use a complete update version (eg TD 7.0.3) to focus entirely on performance.
So improving string/number handling, basic features like array creation, object handling etc etc.

At this point it is difficult for me to explain to customers why they need to upgrade and only selling them a less performant application.
Regards,
Dave Rabelink

Image
Articles and information on Team Developer Tips & Tricks Wiki
Download samples, documents and resources from TD Sample Vault
Videos on TDWiki YouTube Channel

Igor Ivanovic
Site Admin
Site Admin
Croatia
Posts: 129
Joined: 05 Mar 2017, 12:37
Location: Zagreb, Croatia

Re: TD runtime performance

Post by Igor Ivanovic » 02 Jun 2017, 14:01

Dave,

I didn't had the time to measure the performance of TD7 compared to the earlier versions, but after the migration of an TD2.1 app to TD7.0, the main complaint from my customers was/is the app speed.
I use functional classes a lot, and it seems to me that there are a lot of performance issues in that area.
But I have problems with the GUI also, in TD2.1 the creation of complex forms was instant, now you can see how they are created.
It did have the side effect of forcing me to optimize some of the creation functions, which were unnecessary called more than once, which was now clearly visible in TD7.0, and went unnoticed in TD2.1.

I fully support your idea of forcing Gupta/OpenText to address the performance issues in the next update, but I am a little sceptic that it will happen.
I remember in the past when I raised the question about performance the only answer I got was because of UNICODE, new GUI framework, .NET, etc... ie. by design, the answer I get a lot lately.
Igor Ivanovic
Image

efarina
France
Posts: 6
Joined: 09 Mar 2017, 07:47
Location: Paris, France

Re: TD runtime performance

Post by efarina » 07 Jun 2017, 16:16

Hi all,

I'm agree with Dave but I wonder if Opentext invests resources on the development of CTD.
Due to performance issues we will defer our migration project from 6.2 to 7.0

Eric Farina
-Research and Development deputy Director -
www.aareon.fr
Best regards,

Eric Farina
Research and Development deputy Director
www.aareon.fr

Jeff Luther
Site Admin
Site Admin
United States of America
Posts: 124
Joined: 04 Mar 2017, 18:34
Location: Palm Springs, California

Re: TD runtime performance

Post by Jeff Luther » 07 Jun 2017, 17:02

(DAVE R: kindly add any comment you might have to what I write below. And if you have a newer version of your Tester than v21 let us know where to find it. I couldn't. Thanks!)

Eric: you wrote that
"we will defer our migration project from 6.2 to 7.0..."
You might be having only a performance issue with v6.2 right now and a migration would be a big task for you, but just in case... My 2 cents is that v6.3 is a better, more stable version of TD than v6.2. If you look at Dave's web page for the TD v6.x documents: http://wiki.tdcommunity.net/index.php?title=TD_6.x

and scroll down to v6.3's DEFECTS FIXED list, that's a lot of fixes over v6.2. So, if there's nothing really 'broken' with your current v6.2 project other than performance, disregard my thoughts. But if you want/need to migrate but now are waiting on a better v7.x -- and, of course, your migration isn't huge -- then an intermediate migration path might well be to v6.3.

And if you are able, put together a 'performance test' appl. in v6.2 and if you can get hold of v6.3 then test with that version as well. I've asked Dave R. above for his matrix link to show you what, if any, performance increases there are between say v6.2 and v6.3.

P.S. I did find Dave's Performance v21 Tester zip on my pc and have attached a copy for you. I've included the PNG showing v6.2 vs. v6.3 as well.
You do not have the required permissions to view the files attached to this post.
Jeff Luther @ PC Design
Palm Springs, California
TD info. & samples: http://www.jeffluther.net/TD/

Dave Rabelink
Founder/Site Admin
Founder/Site Admin
Netherlands
Posts: 471
Joined: 24 Feb 2017, 09:12
Location: Gouda, The Netherlands

Re: TD runtime performance

Post by Dave Rabelink » 08 Jun 2017, 09:56

I'm still working on a new version of TDPerformance tester which will test more business logic and also GUI performance on basic objects like tables, datafields etc.

The latest released version is indeed v2.1 and can be found here:

http://samples.tdcommunity.net/index ... anceTests/

Beware that the performance graphs show the time taken to perform the tests.
So higher bars mean lower performance. Low bars are better.

I still have a ticket open (created early 2016) to try to get Gupta making effort on this area:
Ticket # 2609304: TD-22755: Overall core TD runtime performance has decreased compared to ANSI versions


This is the case description:
I report this which is a long standing observation since UNICODE TD versions have been released:
The overall core TD runtime performance has decreased.

This has been noticed since TD 5.1 by developers and made more explicit using several performance test tools.
Specially the TD Performance Tester application shows that basic performance using the core features of TD are less performant.

Now more and more of our customers are switching from old ANSI TD version build applications to the latest versions (TD 6.x), we get reports that applications run more slowly and that in some cases where the performance of specific features was already slow, now are becoming even more slow.
Those application features are not changed at all, only ported from old to new TD versions.

I must stress here that I'm talking about CORE TD features. So not database access or other features like ActiveX.
It is about the real basics, like setting variables, calling functions, if/then/else constructions, sending messages etc.

As every application feature use these basic language TD features, every application will suffer in performance when these core features are slower.
When setting variables, checking them (if then else) is slower, all in TD is slower.
On high demand features, with a lot of variable setting/checking etc, this performance decrease is very noticeable.

I know, the switch from ANSI to UNICODE has it's benefits and drawbacks.
More memory to consume, more features it offers but that will take impact on performance. I know that indeed. But my feeling is that in some cases the performance decrease is too much not to do something about it.

As every programming language matures, it also has to deal with performance when new features are introduced.
I really wonder if TD has undergone real and intensive re-evaluations purely on performance issues and if TD can be made much more efficient to help performance improve.
We should not forget the performance part.

To make things more concrete, I did hundreds of tests over the last years to check the performance of code TD.
Mainly used my TD Performance tester application which runs very basic checks and is able to compare every TD release with each other.
Based on this we must conclude that TD 5.x and 6.x will decrease performance generally. I could only find one place where performance was increased: the creation of object arrays.
On all other aspects, we see a general performance hit between 25-50%.

Testing this is easy using the tool:
- open the source in any TD version and create an executable
- place it in the TD runtime folder (IDE or application folder)
- run the test once to init the runtime
- set the stresscount to very high and run the test. Be sure no other applications are running, disable background processes as much as possible
- Re-run the same tests several times and make an average of the numbers
- Do all tests in the TD versions to check
- Compare the results

This tool can also be used by Gupta engineers in their testing process on new releases to check if performance has been compromised.
As seen in TD 6.3 (some UPD) version, the tool showed that the version has huge performance decrease which Gupta solved later.
(higher bars -> lower performance)


Image


The tool can be downloaded here:
http://samples.tdcommunity.net/index ... anceTests/

(use TDPerformanceTester.zip) and take the 2.1 version.

It is saved as TD 1.5 format so can be used in any later TD version.

Also see the test results here:
http://samples.tdcommunity.net/index ... s/Results/

Specially this one:
Image

See the large differences between old ANSI vs the latest TD version.
Looking at the results, we can ask questions to Gupta devs to give explanations why we see such differences.

- Why is setting and checking variables (strings and numbers) slower?
- Function calls also

We ask to investigate why the difference and if any effort is done or can be done to improve it.
Does the TD core use more modern techniques to manage data and memory?
Is the TD runtime optimized using the default techniques used by the newer Visual Studio versions?
I also add a report as attachment of our internal automated performance tests. The results are in line with the TD runtime core tests.
Overall the workflows in TD 6.x applications have a decrease of 25-50% to the end-user. If the TD core is responsible for this, we are unable to fix their issues.

I really hope Gupta devs can investigate the core differences and find ways to improve the TD runtime.
For us this is not a problem but a defect. Customers will see this performance decrease as defect compared to their old applications having the same functionality.
Regards,
Dave Rabelink

Image
Articles and information on Team Developer Tips & Tricks Wiki
Download samples, documents and resources from TD Sample Vault
Videos on TDWiki YouTube Channel

Jeff Luther
Site Admin
Site Admin
United States of America
Posts: 124
Joined: 04 Mar 2017, 18:34
Location: Palm Springs, California

Re: TD runtime performance

Post by Jeff Luther » 08 Jun 2017, 16:15

higher bars mean lower performance. Low bars are better.
Thanks for the clarification, Dave! I misread the graph as I thought the higher bar was better, not worse.
Jeff Luther @ PC Design
Palm Springs, California
TD info. & samples: http://www.jeffluther.net/TD/

Return to “General Discussion”

Who is online

Users browsing this forum: Ccbot [Crawler] and 0 guests