About RLP performance in 4.3

Came to interesting RLP performance comparison, 4.2 vs. 4.3…

The task: calculate 16bit CCITT CRC.

In 4.2:

EMX: 77ms vs. 5ms (18x)
G120: 39.36ms vs. 3.26 (12.1x)
G400: 4.21ms vs. 0.49ms (8.6x)
Cerberus: 13.11ms vs. 0.90ms (14.6x)

In 4.3:

EMX: 76.85ms vs. 6.34ms (12.3x)
G120: 39.27ms vs. 2.22 (17.7x)
G120 (overclocked): 29.71ms vs. 1.46 (20.4x)
G400: 4.04ms vs. 0.41ms (9.8x)
Cerberus: 12.54ms vs. 0.64ms (19.7x)

The results are unexpected. G120, G400 and Cerberus are significantly [em]faster[/em], while EMX is significantly [em]slower[/em]. How’s so?..


Did you do lots of runs? Was this performance differences similar from run to run?

I find it interesting that the Cerberus is so much faster that the G120. The clock speed alone doesn’t explain it and the lack of hardware FPU shouldn’t make a difference on this test. Do you know if the EMC overclock was running?

Results are averaged over 1000 runs, so the numbers are reliable.

Cerberus has all of it’s RAM on chip, so I suspect this is the main reason.

CRC is all about integer numbers. When it comes to fixed point calculations, Cerberus shredds G120 to pieces :slight_smile: Maybe I’ll post some tests tommorow…

@ Simon from Vilnius - There are one or two things I can think of that we do in 4.3 that we did not do in 4.2 that could possibly slow down the EMX. I have a few more improvements on my list to make for the next SDK that may improve performance a bit more on all boards and that may remove the slow down for the EMX if I’m correct in what is causing it (no API changes planned at the moment though).

Cool! Lets us know if you find something! Maybe it’s just a compiler switch?

@ Simon from Vilnius - I’m thinking its more something done in the firmware. It is on my list to more thoroughly investigate the compiler switches in the makefile at some point to see if things can be improved there as well, though no promises.

A little update. If I overdrive memory controller of G120, I get the following results:

G120 (overclocked): 29.71ms vs. 1.46 (20.4x)

I guess it settles down the question about the quickness of Cerberus.

1 Like

Anyone interested in results for SDK 4.3.4? Here they are — this time starring Hydra!

Hydra: 13.56ms vs. 1.84ms (7.4x)
Cerberus: 12.60ms vs. 0.63ms (20.0x)
EMX: 76.85ms vs. 5.94ms (13.3x)
G120: 38.87ms vs. 2.20ms (17.6x)
G120 (overclocked): 31.48ms vs. 1.42ms (22.1x)
G400: 4.05ms vs. 0.39ms (10.4x)

A few comments.

  1. All boards are a tiny bit faster at native side.
  2. Overclocked G120 is also a tiny bit slower at managed side.
  3. Hydra is surprisingly slow at native side.