C++ Builder Modern x64 vs Delphi DCC64
For years, Delphi was plagued by poor performance. Will this change?
I tested versions of SciMark compiled using different programming languages - Java, C#, C++ and Delphi. I am pleased by Embarcadero ModernX x64 compiler improvements and dismayed by Delphi’s poor performance.
Delphi 32-bit vs 64-bit
A developer using Clang, Go, Rust or Java can run circles around Delphi, and pay nothing to code in those languages.
Delphi developers fumble deciding whether using FMX or VCL for their next app, while there are serious concerns - lack of usable profiler, pesky memory leaks and poor code-gen quality.
Delphi’s 32-bit code-generation is very poor. It is the slowest among the languages compared (~898 to ~1219) . Delphi’s 64-bit would improve the speed by 35% to 220% (~1433 to ~2802).
There is no need to talk about profiler, memory-leak checker and other goodies as Delphi x86 is slow. Optimizing can only buy you some speed while it is still slow.
Free Pascal
Free Pascal “FP” (~2767) is faster than Delphi 11 (~2383). In the latest Delphi 12 update 1, patch 1, Delphi (~2802) is a bit faster than FP by a small margin.
C# fell on hard times
Microsoft has been priming and pumping the NET ecosystem for years - NET2.0, then NET 3.0, then NET3.5, then NET4, then NET4.5, then NET5.0, then NET core, NET core 2.0, then NET core 3.0, then NET 6.0, then NET 7.0, then NET 8.0, and… NET 9.0 showcasing Win-Forms, WPF, MAUI… - with little or nothing to show.
There are creaks and growing crevices - Unity3D is slow1, - gamers grumbling about poor performance, FPS stuttering, random out-of-memory crashes while gaming on Xbox Series X vs Sony PlayStation 4/5.
On Windows, NET has becoming class-bloat, where dozens of NET classes are made available, then depreciated - with no replacement class or replaced class functionality more useless or incompatible than what was replaced or depreciated.
On Android, C# Xamarin Forms is a complete joke, C# Native Android encapsulating the Android XML forms results in crashes, slow rendering, even slower processing.2
There is a sense of disappointment that MAUI has not succeeded Xamarin Forms, while Uno and Avalon touts cross-platform compatibility3.
I was surprised how slow the C# run-time was... It would be pointless to develop in C# as the run-time is slower than Free Pascal or Delphi x64.
C++ and Java
QT uses Clang and Visual C++ on Windows platform. It is 2 to 6 times faster than Delphi.
Java is still holds strong. The JIT is performant.
It’s easy to port from Delphi to C++/QT, Swift, Rust and Go.
Too late?
For years, I grumbled how Delphi’s and C++ Builder’s slow compiler were… until C++ Builder 12.1 came.
I found C++ Builder 12.1 Update 1 Patch 1 Modern x86 run-time has respectable SciMark scores, besting Java default JVM, while Visual C++ and Graal VM’s performance are slightly better.
I heard about Delphi’s support for ModernX… I wanted to check it out…
Was it real? I right-clicked on Add Platform… it was disabled. I felt sad…
There have been newsgroup postings about Inprise, DevCo, CodeGear then Embarcadero implementing a next-gen compiler since 2008. More than 17 years have passed. As the years passed - dreams faded, hopes faded. Embarcadero demands yet another year of subscription-money to stay up-to date.
Hopes have faded, dreams have faded.
If Delphi had next-gen compiler 10, 15 years ago it would mean something.
There are glimmers of hope. When will Delphi get Windows 64-bit ModernX compiler? Will 2024 be the year of victory? Or… maybe 2025 or maybe 2030?
I am old… More than a decade has passed. If Embarcadero doesn’t get it’s act together, soon, two decades will pass. I waited patiently. Does it matter?
Which Polytechnic, university or college still teaches Delphi or teaches C++ Builder?
https://forum.unity.com/threads/the-unity-is-getting-very-very-slow.1077839/ Unity editor is slow.
https://blog.codemagic.io/why-did-i-move-from-xamarin-forms-to-flutter/ Flutter vs Xamarin.Forms – Why Did I Move From Xamarin.Forms to Flutter?
https://avaloniaui.net/XPF - Avalon WPF