ThemeServices.DrawText(); performance diversity
Original Reporter info from Mantis: Blaazen @Blaazen
-
Reporter name: Vojtech Cihak
Original Reporter info from Mantis: Blaazen @Blaazen
- Reporter name: Vojtech Cihak
Description:
ThemeServices.DrawText(); on Qt is 4-30x slower than on GTk2 or Wine.
ThemeServices.DrawText(); on Qt - TBitmap.Canvas is 1.5-6x slower than TPaintBox.Canvas.
Observations:
GTk2:
Rendering to TBitmap is in average faster (~ 20%).
Flag DT_NOCLIP causes 10% faster even if longer text is rendered. It is unusual, rendering of text is expensive operation.
Rendering LongString is 30% slower even if the same amount of text is rendered (because of aRect-clip).
Wine:
Rendering to Bitmap is in average faster (<10%).
Flag DT_NOCLIP causes slower - expected, longer text is rendered.
Rendering LongString is 30% slower even if the same amount of text is rendered (because of aRect-clip).
Qt:
Flag DT_NOCLIP has no effect - unexpected, longer text is rendered.
Steps to reproduce:
Any widgetset:
- Run demo.
- Try both buttons with any combination of checkboxes.
+ There is something wrong with Qt:
- Run demo
- Press 1.btn
- Switch on "LongString"
- Press 1.btn
- Switch off "LongString"
- Press 1.btn
Now demo runs much faster.
Additional information:
Lazarus 1.9.0 r56055 FPC 3.0.2 x86_64-linux-qt
Lazarus 1.6.4 r54278 FPC 3.0.2 i386-win32-win32/win64
Mantis conversion info:
- Mantis ID: 32560
- OS: Linux
- OS Build: Chakra 64-bit
- Build: 56055
- Platform: amd64
- Version: 1.9 (SVN)