IECS Advanced Console Execution (Speed) Tests
The first Inference Engine Component Suite (IECS) application we will start with is the IECS Advanced Console application. As mentioned, this application should provide a good mix of non-visual benchmarks with updates to TListBoxes and output to a TMemo and tests Win32, Win64, and OSX.
IECS Advanced Console, VCL, Win32
The IECS Advanced Console Win32 VCL speed tests closely mirror the Hello World VCL Win32 speed results. All versions complete the tests in around 1.2 seconds with only 0.03 second difference between the winner (Delphi XE) and the loser (Delphi 2010). The differences are essentially meaningless. According to these test results, no significant compiler works has probably occurred between Delphi 2010 and XE6 (at least for Win32).
Of more interest, the IECS application EXE sizes show the same ballooning of application size as the Hello World application.
IECS Advanced Console, FMX, Win32
Since the Win32 VCL results were so similar, we decided to skip doing Win64 VCL results and go directly to examining IECS Advanced Console Win32 FMX speed tests. With the IECS Advanced Console running all of those expert system consecutively, we would expect the Delphi versions that did well with small number of items in TListBox (e.g., XE2 and XE3) and with a moderate number of lines added to a TMemo without BeginUpdate/EndUpdate calls (e.g., XE4 and XE6) should do best. Since there are 4 listboxes (one each for Agenda, Facts, Fact Templates, and Rules) versus 1 memo, XE2 and XE3 should be the winner. This is what we see, Delphi XE3 is fastest. Delphi XE2 is hurt by its poor TMemo performance and almost loses second place to Delphi XE6. Delphi XE5 is the clear loser with its abysmal TMemo performance making it 2.5x slower than XE3.
*Note the Delphi XE6 is “helped” because we had to disable the Memo1.GoToTextEnd statement after every addition to the TMemo, which causes a guaranteed access violation in XE6 (without updates). This operation incurs some cost and by not having it, Delphi XE6 manages to beat XE4.
The EXE size closely tracks Hello World FMX Win32 sizes, with every version getting bigger except for the oversized EXE sizes produced by Delphi XE3. These differences hold true for all applications. For the rest of these blog posts, we are not going to compare EXE size anymore.
IECS Advanced Console, FMX, Win64
The same pattern of results holds for the 64-bit version of the IECS Advanced Console application running on a Windows 7 64-bit box. Delphi XE3 is fastest. Delphi XE2 is hurt by its poor TMemo performance and almost loses second place to Delphi XE6. Delphi XE5 is the clear loser with its abysmal TMemo performance making it 2.5x slower than XE3. If we compare the ratio of Win64 execution speed to Win32 execution speed, we see that Delphi XE2, XE5 and XE6 all improve their speed in Win64. For some reason, Delphi XE3 and XE4 are slower in Win64 than their Win32 counterparts.
IECS Advanced Console, FMX, OSX
Interestingly, when we test the IECS Advanced Console on OSX, the pattern is broken. Delphi XE3 is still fastest. However, Delphi XE6 is now second and XE4 third.
As we mentioned in Part 4, the Windows machine used for testing is not exactly comparable to the Mac Mini. However, the Windows Machine specs (Windows 7 64-bit Intel I7 930 @ 2.8 GHz CPU, and 6 GB RAM) are *close* to the Mac Mini specs (OSX 64-bit Intel I7 @ 2.3 GHz with 4GB RAM), so it will be interesting to do comparisons of the FMX Win32 vs FMX OSX IECS.
The Win32 versions absolutely destroy the OSX versions and are 2x-4x faster. The poor TMemo performance on OSX significantly hurts the OSX applications. On the next page, we examine the IECS Basic Console speed tests…