Jump to content
Mike Torrettinni

How to compare performance between Delphi versions?

Recommended Posts

I'm using Delphi 10.2.3 and waiting for 10.5 release. I have a few test cases that measure performance of some common used functions and I want to know if performance in 10.5 will degrade, 32 and 64bit version.

I never install 2 versions at the same time - this means I can't just run both versions and compare results, so when 10.5 is released I will uninstall 10.2.3 and just have 10.5 installed.

 

So, I was thinking to create all performance tests executable with 10.2.3, and when 10.5 is released I can run old test executable and new 10.5 compiled code and compare timing results.

 

Is there any other, easier way to do this?

Share this post


Link to post

You can install all major releases side by side, you just cannot do that with point releases.

I have 2006 through to 10.4.2 all installed on this machine I'm typing on with no issues other than removing all the BDS related path data from the path (it's not needed in general).

  • Like 1
  • Thanks 1

Share this post


Link to post

I had some issues with 3rd party code, when I had 2 versions installed. I remember registered activex control was causing some issues, too. Perhaps I need to spend more time solving these issue when 10.5 is out.

It would be nice to have 2 versions installed side by side, for a couple of days at least, to check performance.

Share this post


Link to post

What kind of issues did you have? BPLs for different version need to be in different directories if they do not have any kind of naming convention for Delphi IDE version.

Some components will complain they cannot be found unless the folder they are in is on the path. Instead of adding to either your system path or user path; try modifying the path variable in the IDEs environment variables so that its isolated to that version of the IDE - this has worked for me in the past.

  • Like 1

Share this post


Link to post
Guest
Posted (edited)

hi @Mike Torrettinni

This obsession with RAD10.5 could be a great harm to your psyche, if, I said if, RAD10.5 is not at all what you are expecting ... Think about it.

 

To live with the aforementioned editions, the basics must be carried out:

  1. Installation from the smallest to the largest;
  2. very strict definition in the "paths" and "outputs" (here a note: ALWAYS LOOK IN PROJECT->OPTIONS)  of each suite installed in that IDE;
    1. some company, insisting in "put" your BPL in ..\Windows\SystemXX folder
    2. many developers, dont pay attention in "where my files will be stored"
  3. It makes no sense to compare an IDE, such as: XE8 with RAD10.x.x. Do it?

hug

Edited by Guest

Share this post


Link to post

@emailx45 Not sure if you saw all the topics with 10.4.2 issues in last 2 weeks on this forum, just use search. I will skip it.

 

@David Hoyle I remember Eurekalog was one of the issues, I think because I couldn't customize installation folders. Also activex dll which needs to be registered - I needed to register different dll version each time I switched projects. Annoying, but like I said, I probably didn't spend enough time resolving these issues.

The 3rd party source that doesn't need to be installed was OK, like you said in different folders.

Share this post


Link to post
Posted (edited)

If you have an active subscription... then why wait for 10.5 ?  Especially when most seem to like 10.4.1 and 10.4.2.  Why cut yourself short waiting...?  Just curious.  You answered it a minute ago :classic_biggrin:

Edited by Fons N

Share this post


Link to post
Guest
Posted (edited)
7 minutes ago, Mike Torrettinni said:

Also activex dll which needs to be registered -

you should know, you can install a DLL by RegSvr32 tools from MSwindows...

  • regsrv32 /i  /s  / "C:\xxx\DLL_NAME.dll"  not quote is necessary at all

image.png.4861ec55f34f6f19494733828adc345d.png

 

hug

Edited by Guest

Share this post


Link to post
4 minutes ago, Fons N said:

If you have an active subscription... then why wait for 10.5 ?  Especially when most seem to like 10.4.1 and 10.4.2.  Why cut yourself short waiting...?  Just curious. 

Skipping 10.3 and 10.4 due to some code wasn't ready for migration at the time. When I saw bug fix list for 10.4.2 I was planning to upgrade, but then I decided to wait for next major release.

Share this post


Link to post
1 minute ago, emailx45 said:

you can install a DLL by RegSvr32 tools from MSwindows...

Yes, but if you need 2 different dll versions for different project, you need register and un-register each time you use different project.

Share this post


Link to post
Guest
Posted (edited)
12 minutes ago, Mike Torrettinni said:

Yes, but if you need 2 different dll versions for different project, you need register and un-register each time you use different project.

not necessary if you do use the absolute reference to a DLL + path

 

hug

Edited by Guest

Share this post


Link to post
Guest
Posted (edited)
16 minutes ago, Mike Torrettinni said:

Yes, but if you need 2 different dll versions for different project, you need register and un-register each time you use different project.

maybe help better:  https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-redirection

Quote
  • Applications can depend on a specific version of a shared DLL and start to fail if another application is installed with a newer or older version of the same DLL. There are two ways to ensure that your application uses the correct DLL: DLL redirection and side-by-side components. Developers and administrators should use DLL redirection for existing applications, because it does not require any changes to the application. If you are creating a new application or updating an application and want to isolate your application from potential problems, create a side-by-side component.
  • To enable DLL redirection machine-wide, you must create a new registry key. Create a new DWORD key called DevOverrideEnable at HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options and set it to 1. After this, you must restart your computer to see the effects.
  • To use DLL redirection, create a redirection file for your application. The redirection file must be named as follows: App_name.local. For example, if the application name is Editor.exe, the redirection file should be named Editor.exe.local. You must install the .local file in the application directory. You must also install the DLLs in the application directory.
  • The contents of a redirection file are ignored, but its presence causes Windows to check the application directory first whenever it loads a DLL, regardless of the path specified to LoadLibrary or LoadLibraryEx. If the DLL is not found in the application directory, then these functions use their usual search order. For example, if the application c:\myapp\myapp.exe calls LoadLibrary using the following path:
    • c:\program files\common files\system\mydll.dll
  •  
  • And, if both c:\myapp\myapp.exe.local and c:\myapp\mydll.dll exist, LoadLibrary loads c:\myapp\mydll.dll. Otherwise, LoadLibrary loads c:\program files\common files\system\mydll.dll.
    • Alternatively, if a directory named c:\myapp\myapp.exe.local exists and contains mydll.dll, LoadLibrary loads c:\myapp\myapp.exe.local\mydll.dll.
  •  
  • If the application has a manifest, then any .local files are ignored.
  • If you are using DLL redirection and the application does not have access to all drives and directories in the search order, LoadLibrary stops searching as soon as access is denied. (If you are not using DLL redirection, LoadLibrary skips directories that it cannot access and then continues searching.)
  • It is good practice to install application DLLs in the same directory that contains the application, even if you are not using DLL redirection. This ensures that installing the application does not overwrite other copies of the DLL and cause other applications to fail. Also, if you follow this good practice, other applications do not overwrite your copy of the DLL and cause your application to fail.

 

Like games, we have many DirectX versions installed in pc, then, it's possible use a particular DLL with not problem!

 

hug

Edited by Guest

Share this post


Link to post
Guest
Posted (edited)
4 minutes ago, Mike Torrettinni said:

At the time, this was too complicated for me to handle.

look, about this... nothing to say! your problem your solutions.

but, just add some key on registry and copy the files (DLL) for a target, it is not so complicated.

 

anyway, you decide if yes or not.

 

NOTE: I dont use RAD10.4.x ---> prefere 10.3.3 more stable with all problems...

 

hug

Edited by Guest

Share this post


Link to post

I run 10.3 together with 10.4.1 and now 10.4.2.  10.2 seems old school :classic_biggrin: 

  • Haha 1

Share this post


Link to post

I run 10.3 at home and 10.4.1 at the office (I'm always working.... but this is another question).
At skin 10.3 32-bits exe are a lot slower than 10.4.1, with same libraries (almost all at least)  but I will create test units to check better...

 

Either PCs are I7 with 16GB of ram and W10 20H2.

Unfortunately, a double SSD corruption, for a damaged motherboard SATA compart, finished my Delphi installations count, so when I'm not at the office,
I need to use the old 10.3 in-home laptop. In this case, I need to keep different versions of DFM (incompatible when from Rio I open Sydney modified files).
 

Share this post


Link to post

I'd choose multiple VM's for each IDE version. Functions to benchmark could be put into DLL's and tested on a host machine

  • Like 1

Share this post


Link to post
Posted (edited)
48 minutes ago, shineworld said:

At skin 10.3 32-bits exe are a lot slower than 10.4.1, with same libraries (almost all at least)  but I will create test units to check better...

This is interesting, since I'm still on 10.2 so the difference could be even bigger. Any example showing a difference in performance would be great!
 

Edited by Mike Torrettinni

Share this post


Link to post
25 minutes ago, Fr0sT.Brutal said:

I'd choose multiple VM's for each IDE version. Functions to benchmark could be put into DLL's and tested on a host machine 

Thanks, was just thinking about this. But why do you suggest dll, just exe would work, right?

Share this post


Link to post

I was used with the development in VMWare VM's with BDS2006 for simple reasons:
- BDS2006 doesn't work with W10 (my guest) and I need to run it on XP (host).
- Often I need to save the entire VM because the update of 3rd party libraries in time adds incompatibilities to old projects.
  So I save a full image related to a big project to restore it when I need to re-open and modify that project.

I never tried to install RIO or SYDNEY in VM, I don't know if is permitted...
  

Share this post


Link to post
1 hour ago, shineworld said:

I was used with the development in VMWare VM's with BDS2006 for simple reasons:
- BDS2006 doesn't work with W10 (my guest) and I need to run it on XP (host). 

BDS2006 does actually work on Windows 10. Every Delphi version since Delphi 6 does. Some need tweaks though.

 

But using a VM is a good idea anyway, if it can be done for the type of development you are doing (I can't unfortunately since I need to access custom hardware and the remote debugger never worked for me.)

 

1 hour ago, shineworld said:

I never tried to install RIO or SYDNEY in VM, I don't know if is permitted...

Why shouldn't it? I have been running both in (XenServer) VMs only.

Share this post


Link to post
3 hours ago, Mike Torrettinni said:

But why do you suggest dll, just exe would work, right?

Yes they will but with DLLs you can check perf inside the same process which probably could be more useful & give more precise results

Share this post


Link to post
8 minutes ago, Fr0sT.Brutal said:

Yes they will but with DLLs you can check perf inside the same process which probably could be more useful & give more precise results

Can you please expand on this? I have only basic experience with dlls.

Share this post


Link to post
Posted (edited)
7 minutes ago, Mike Torrettinni said:

Can you please expand on this? I have only basic experience with dlls.

What exactly is unclear? Create set of DLLs with every RAD version you want, export the functions you want to check then use all these DLLs in one bench project. Basic xp should be quite enough for this 🙂

Of course it's just an option. Exe's likely will be fine as well

Edited by Fr0sT.Brutal
  • Thanks 1

Share this post


Link to post
Just now, Fr0sT.Brutal said:

What exactly is unclear? Create set of DLLs with every RAD version you want, export the functions you want to check then use all these DLLs in one bench project. Basic xp should be quite enough for this 🙂

Aha, now I get it!

And since we can't mix 32 and 64, I should create both versions. Thanks!

 

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×