UTFT Benchmark

Hi :slight_smile:

I’ve created an UTFT Library benchmark, test it, and tell me your results !!!

I have 1344 points on my due.

Hope you’ll like the demo :slight_smile:

ArduMark.ino (6.28 KB)

It is a little unfair to expect Benchmarks for such a big display.

Anyway, I ran your sketch on a 800x480 with a CTE DUE shield : 960

I then ran it with UTFTGLUE class on top of MCUFRIEND_kbv library : 537

It would be far more interesting to compare the ILI9481 type of 480x320 controllers.

  1. there are many more 480x320 owners
  2. there are optimised libraries. e.g. <TFT_HX8357.h> and <TFT_HX8357_due.h>
  3. there are a lot more Mega owners than Due owners.

David.

p.s. I removed the UTouch calls. They do not do anything useful.
the MCUFRIEND_kbv library does not support angled text

Have the same LCD :)

Read the sketch, its scales the points according to the number of pixels :)

Well, you've got better results than me, because the lower the better

David wins with his glue library!!

I hand (butchered) optimised UTFT to 16 bit only, and I got 614… Kudos David :stuck_out_tongue:

Regards,

Graham

Actualy, theres a bug in my code, I will upload the good version tomorow (The points are not change correctly with the resolution, it was a silly error from me xD)

Now that I overclocked my due (114MHz), i’m getting 1305 points (with the bug still in)

I found the over-clocking ideas that are out there for the DUE, actually reduce performance of UTFT....

I moved away from those long ago...

But, will be interested to see your new version!

Regards,

Graham

PS 800x480 CTE50

Here is the new version (hasn’t been tested)

I cant test it now, but if you can, tell me your score !

Now, the higher, the better (This is the correction I was talking about) :slight_smile:

ArduMark.ino (6.28 KB)

Hand butchered UTFT score = 576
Standard UTFT score = 960

Not sure higher is better!!!

Regards,

Graham

WHOO HOO!!! my 1500th post!!! :smiley:

Yes, sorry ^^

But normaly, il you test on a lcd with a different size, it should be the same score (If you dont change of library)

Sorry for bad english :)

david_prentice: It would be far more interesting to compare the ILI9481 type of 480x320 controllers.

TFT_HX8357_Due does not support angled text but here are the results for a 480 x 320 screen.

ArduMark test with HX8357_Due library TFT width = 480 TFT height = 320

TestA time = 1697 TestB time = 219 TestC time = 1453 TestD time = 20 TestE time = 698 TestF time = 80 Points = 61

Results on a Mega:

ArduMark test with HX8357 library TFT width = 480 TFT height = 320

TestA time = 4648 TestB time = 219 TestC time = 1347 TestD time = 66 TestE time = 593 TestF time = 114 Points = 92

I suspect the points calculation does not correctly compensate for the resolution so I have printed the execution times in milliseconds. Only TestA seems to have a fixed size and thus would give a result that is equivalent to a larger display. On the Mega millisecond timing variables were set to "unsigned long" to avoid overflow.

Results with Due running the basic UTFT library are:

ArduMark test with UTFT library TFT width = 480 TFT height = 320

TestA time = 5462 TestB time = 650 TestC time = 8900 TestD time = 78 TestE time = 2027 TestF time = 2860 Points = 291

Results on a Mega with UTFT:

ArduMark test with UTFT library TFT width = 480 TFT height = 320

TestA time = 24429 TestB time = 1727 TestC time = 23079 TestD time = 422 TestE time = 5235 TestF time = 9492 Points = 983

In these UFTF cases TestF is drawing rotated text so would be expected to take longer.

  Serial.println("ArduMark test with HX8357_Due library");
  Serial.print("TFT width  = ");Serial.println(width);
  Serial.print("TFT height = ");Serial.println(height);
  Serial.println();
  Serial.print("TestA time = ");Serial.println(a);
  Serial.print("TestB time = ");Serial.println(b);
  Serial.print("TestC time = ");Serial.println(c);
  Serial.print("TestD time = ");Serial.println(d);
  Serial.print("TestE time = ");Serial.println(e);
  Serial.print("TestF time = ");Serial.println(f);
  
  Serial.print("Points     = ");Serial.println(points);