Ubuntu Components is hard on the disk and CPU when loading images

Bug #1558663 reported by Albert Astals Cid
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
ubuntu-ui-toolkit (Ubuntu)
Fix Released
Undecided
Albert Astals Cid

Bug Description

 * Take the following simple example of a listview with an image.
 * run it with strace qmlscene
 * scroll the list to the bottom

When not including "import Ubuntu.Components 1.3" there is exactly one disk access to load the image
open("/home/tsdgeos_work/test/face.png", O_RDONLY|O_CLOEXEC) = 19

When including "import Ubuntu.Components 1.3" there are around 500 disk access including stats for the file and listing the directory containing the file (see disk_access file).

Also for each of those directory listings we're also creating and destroying the same QRegExp again and again.

I understand that some of this overhead is needed since we have that thing that loads the best possible file for the given grid units, but doing it again and again for the same file seems a bit of overkill, maybe we could cache that?

Tags: unity8

Related branches

Revision history for this message
Albert Astals Cid (aacid) wrote :
Revision history for this message
Albert Astals Cid (aacid) wrote :
Revision history for this message
Albert Astals Cid (aacid) wrote :
summary: - Ubuntu Components is hard on the disk when loading images
+ Ubuntu Components is hard on the disk and CPU when loading images
Revision history for this message
Andrea Bernabei (faenil) wrote :

that's an awesome find, well done! I'd love to take some time to do this kind of analysis :)

Gerry Boland (gerboland)
tags: added: unity8
Changed in ubuntu-ui-toolkit (Ubuntu):
status: New → In Progress
Cris Dywan (kalikiana)
Changed in ubuntu-ui-toolkit (Ubuntu):
assignee: nobody → Albert Astals Cid (aacid)
Cris Dywan (kalikiana)
Changed in ubuntu-ui-toolkit (Ubuntu):
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package ubuntu-ui-toolkit - 1.3.2184+17.04.20170306

---------------
ubuntu-ui-toolkit (1.3.2184+17.04.20170306) zesty; urgency=medium

  [ Adnane Belmadiaf ]
  * Add support for CheckBox label when set
  * Add more tests for checkbox. Fixes LP: #1333228, LP: #1442851.
  * Make sure we resets partial text input from the input method.
    Fixes LP: #1630872.
  * Fix ListItem title/subtitle alignment & elide in RTL mode.
    Fixes LP: #1665944.
  * Fix PageHeader title alignment & elide in RTL mode. Fixes LP: #1665942.
  * Fix UbuntuListView docs. Fixes LP: #1486940.
  * Add count prop to OptionSelector. Fixes LP: #1341559.
  * Replace the hardcoded color with a theme color. Fixes LP: #1664758.
  * Fix the import statement for Menu, MenuBar and MenuGroup.
    Fixes LP: #1660604.

  [ Albert Astals Cid ]
  * Fix memory leak in UCStyleHints
  * ThinDivider: Anchors can't be null, set to undefined
  * No need to call UCUnits::resolveResource to learn we just need to load it
    normally because the fact that we already loaded it normally means we need
    to load it normally. Fixes LP: #1558663.
  * Fix conditional jump or move depends on uninitialised value(s)

  [ Christian Dywan ]
  * Initialize UCApplication with no side effects. Fixes LP: #1662868.
  * Unit test case insensitive FilterBehavior.pattern. Fixes LP: #1663924.
  * ListItemPopover delegate should (in)visible as per action Bug 1662220:
    [ListItem] Popupmenu shows traces of disabled actions

  [ Olivier Tilloy ]
  * Check that window is not null before accessing its activeFocusItem property.
    Fixes LP: #1664620.

  [ Lukáš Tinkl ]
  * Unbreak the startup race between unity8/qtmir and UITK trying talk to
    content-hub. Fixes LP: #1663106.

 -- Zoltán Balogh <email address hidden> Mon, 06 Mar 2017 16:04:56 +0000

Changed in ubuntu-ui-toolkit (Ubuntu):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.