[GRASS-dev] [GRASS GIS] #2033: Moving g.pnmcomp to lib/display to improve render performance of wxGUI

GRASS GIS trac at osgeo.org
Tue Jul 23 16:49:56 PDT 2013


#2033: Moving g.pnmcomp to lib/display to improve render performance of wxGUI
----------------------------------------------+-----------------------------
 Reporter:  huhabla                           |       Owner:  grass-dev@…              
     Type:  enhancement                       |      Status:  new                      
 Priority:  major                             |   Milestone:  7.0.0                    
Component:  wxGUI                             |     Version:  svn-trunk                
 Keywords:  display, Python, multiprocessing  |    Platform:  All                      
      Cpu:  All                               |  
----------------------------------------------+-----------------------------

Comment(by glynn):

 Replying to [comment:6 huhabla]:
 > It seems to me that creating raw bmp images without mmap enabled shows
 the best performance for the PNG and Cairo driver. Maybe i did something
 wrong, but the use of mmap shows no obvious benefit?

 Using mmap() in the driver is probably not that significant in this
 context.

 It's more useful when GRASS_PNG_READ=TRUE, the resolution is high, and the
 rendering is simple and/or limited to a portion of the image. In that
 situation, mmap() eliminates the read() as well as the write(), and only
 the modified portion needs to be read and written.

 Another area where it matters is with e.g. wximgview.py (and its
 predecessors), as it's safe to read a BMP image which is being modified
 using mmap(), whereas doing the same thing to a file which is being
 written out with write() runs the risk reading a truncated file.

 Other than that, the performance difference between using mmap() and
 read() on the read side boils down to mmap() avoiding a memcpy(). The
 extent to which that matters depends upon what else you're doing with the
 data. For wxGUI, it's probably a drop in the ocean.

 > Any suggestions to improve the benchmark? Does my setup produce
 reasonable results?

 There isn't anything I'd particularly take issue with. However:

 1. With the cairo driver, BMP files use pre-multiplied alpha (because
 that's what cairo uses internally), whereas PPM/PGM output includes an un-
 multiplication step. So depending upon your perspective, the cairodriver
 benchmarks are rigged against PPM or in favour of BMP.

 2. Producing separate results for PPM with g.pnmcomp and PPM with PIL
 would provide a clearer comparison between the two compositing options and
 the various formats.

-- 
Ticket URL: <http://trac.osgeo.org/grass/ticket/2033#comment:7>
GRASS GIS <http://grass.osgeo.org>



More information about the grass-dev mailing list