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 :slight_smile:

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

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 :slight_smile:

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);