Bug 89986 - PaintHelper performance rendering or redrawing graphic objects, e.g. macro button, grids, etc (OSX)
Summary: PaintHelper performance rendering or redrawing graphic objects, e.g. macro bu...
Status: RESOLVED INVALID
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Calc (show other bugs)
Version:
(earliest affected)
4.5.0.0.alpha0+ Master
Hardware: x86-64 (AMD64) macOS (All)
: high major
Assignee: Not Assigned
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-03-13 10:59 UTC by Alex Thurgood
Modified: 2015-07-27 12:52 UTC (History)
2 users (show)

See Also:
Crash report or crash signature:


Attachments
profiling screenshot (205.61 KB, image/png)
2015-03-13 10:59 UTC, Alex Thurgood
Details
Breakdown of profile in PaintHelper (213.75 KB, image/png)
2015-03-13 11:15 UTC, Alex Thurgood
Details
exported profile as text (1.54 MB, text/plain)
2015-03-13 11:22 UTC, Alex Thurgood
Details
CSV export of profile run (18.31 KB, text/csv)
2015-03-13 11:28 UTC, Alex Thurgood
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Alex Thurgood 2015-03-13 10:59:28 UTC
Created attachment 114072 [details]
profiling screenshot

Wile testing an alleged context switching bug using keyboard shortcuts, I noticed that LO was particularly slow at redrawing a Calc sheet that contained a macro button, so I did some profiling, see attached screenshot.

There seems to be a significant performance hit in the PaintHelper module of on average about 100ms on my system :

Nom du modèle :	Mac mini
  Identifiant du modèle :	Macmini4,1
  Nom du processeur :	Intel Core 2 Duo
  Vitesse du processeur :	2,66 GHz
  Nombre de processeurs :	1
  Nombre total de cœurs :	2
  Cache de niveau 2 :	3 Mo
  Mémoire :	4 Go
  Vitesse du bus :	1,07 GHz
 
This manifests itself in that when say three different documents are open simultaneously (Writer, Calc, Database main window), context switching with the Mac keyboard shortcut Cmd+`causes noticeable delay in redrawing of the Calc sheet, and it appears to be systematically linked to calls to the PaintHelper module.
Comment 1 Alex Thurgood 2015-03-13 11:15:12 UTC
Created attachment 114073 [details]
Breakdown of profile in PaintHelper

The attached screenshot shows a breakdown of a PaintHelper call
Comment 2 Alex Thurgood 2015-03-13 11:22:03 UTC
Created attachment 114075 [details]
exported profile as text
Comment 3 Alex Thurgood 2015-03-13 11:28:35 UTC
Created attachment 114076 [details]
CSV export of profile run
Comment 4 Michael Meeks 2015-04-27 08:18:06 UTC
I think this is somewhat misleading; the PaintHelper has some quite deep recursion IIRC but (I would hope) the real costs are all at the bottom while doing the actual rendering. At least, that is my hope =)
Comment 5 Alex Thurgood 2015-04-27 17:18:37 UTC
(In reply to Michael Meeks from comment #4)
> I think this is somewhat misleading; the PaintHelper has some quite deep
> recursion IIRC but (I would hope) the real costs are all at the bottom while
> doing the actual rendering. At least, that is my hope =)

Is there anyway I might be able to shed more light on this  ?
Comment 6 Alex Thurgood 2015-04-28 13:25:10 UTC
Build switches, fwiw :
--with-ant-home=/Volumes/BUILDHD/Shared/packages/apache-ant-1.9.2
--without-junit
--enable-64-bit
--with-extra-buildid
--enable-ext-nlpsolver
--enable-ext-google-docs
--enable-ext-languagetool
--enable-ext-diagram
--enable-ext-typo
--enable-ext-validator
--enable-ext-watch-window
--enable-extra-template
--enable-extra-gallery
--enable-ext-wiki-publisher
--enable-extension-integration
--with-lang=fr
--with-help
--enable-epm
--with-package-format=dmg
--enable-ext-mariadb-connector
--with-system-mariadb
--enable-bundle-mariadb
--with-myspell-dicts
Comment 7 Michael Meeks 2015-04-28 19:26:11 UTC
Unclear really =) it might be interesting to run libreoffice under cachegrind for OS/X to see if we can dis-aggregate the real cost of rendering that stuff to see where the badness truly is; of course it may be in the PaintHelper itself - but I'm suspicious =)