[sugar] On improving Sugar performance

Bernie Innocenti bernie
Mon Apr 28 09:17:04 EDT 2008


Hello,

me, tomeu and Marco engaged in a discussion about Sugar performance
off-list, but at some point we thought it would be better material
for a public discussion.

Each one of us has been interested in performance for a long time,
working in different areas and with different perspectives.  To my
knowledge, Michael, Chris and Scott have also been measuring and
contributing in the past.

We have of course different ideas and proposals, with Tomeu being
in a better position to give us hard numbers and informed opinions
because of the truly aggressive performance work he has been doing
lately.

When we say generically "performance", we aggregate several
related issues:

 - time to perform specific actions (such as refreshing the screen)
 - memory footprint of the Sugar shell and associated services
 - overhead common to all activities (the "hello world" memory usage)
 - memory footprint of specific activities (such as the browser)
 - startup time of activities
 - boot time of the OS

To simplify the discussion, I'd like to set aside, for now these
other areas:

 - filesystem (datastore) performance and scalability
 - networking performance and scalability

I'd like to introduce our discussion in the form of a platonic
dialog with Tomeu:

 - What have you been doing so far?

 - What are the benefits you obtained so far?

 - Which are the areas where we could gain the most?

 - Do you see low-hanging fruit we could pick in the short term?

 - How much further can we improve by dropping specific unnecessary
   or redundant work and similar pessimizations?

 - How much further can we improve by refactoring subsystems and
   APIs to do less work?

 - How much further can we improve by rewriting some
   performance-critical parts in a low-level language?

 - How much further can we improve by replacing inefficient
   frameworks and support modules with different implementations
   available off the shelf? (such as "use 

 - How much further can we improve by compromising on the feature
   set we are providing?  (such as "disable anti-aliasing" or
   "simplify SVG icons or convert to bitmap")

 - How much further can we improve by pruning from feature set?
   (such as "drop rounded edges from the Sugar theme").


Anyone is of course welcome to join us with questions, answers and
proposals.  To keep the discussion relaxed, we do not require backing
each and every idea with benchmark results, which in some cases are
hard to obtain.  Nevertheless, measuring is a useful tool, especially
when there there's disagreement on how effective each solution might be.

-- 
   \___/
  _| o |  Bernie Innocenti - http://www.codewiz.org/
  \|_X_|  "It's an education project, not a laptop project"



More information about the Sugar-devel mailing list