[GRASS-dev] [pygrass] should I use ctypes or cython?

Pietro peter.zamb at gmail.com
Tue Jun 19 13:34:01 PDT 2012


Dear all,

I'm going on with the GSoC, and I'm using ctypes to call the Grass's
function, but I found this comment:

http://stackoverflow.com/a/5686873

(from a cython developer) that it has instilled in me a doubt that
using Cython (http://cython.org/) could make pygrass more
flexible/extensible. From my point of view I prefer ctypes, because it
is already inside grass and because I need to get something running
quickly, but maybe could be more useful for Grass to implement less
code but with a tool that give more flexibility in the future...

What do you think?
Can I go on with my GSoC project using ctypes? should i switch to Cython?



I did some benchmarks to test the speed of pygrass, and it is not too
bad. Below I reported the execution time of add a number to a Raster
map,  using r.mapcal module, the RasterRow class (using Rast_get_row,
and Rast_put_row functions), and using the Segmentation library
(segment_get_row and segment_put_row):

r.mapcalc +2; 21.487251 sec/pass
RasterRow +2; 11.181928 sec/pass
RasterSeg +2; 14.730741 sec/pass

Test an if condition:

r.mapcalc if; 14.240596 sec/pass
RasterRow if; 14.753899 sec/pass
RasterSeg if; 19.982334 sec/pass

Test a function:
r.mapcalc sqrt; 16.495872 sec/pass
RasterRow sqrt; 18.591585 sec/pass
RasterSeg sqrt; 22.305732 sec/pass


You may find the code here:

git clone https://code.google.com/p/pygrass/


and you can run the benchmark code with:

python test/benchmark.py


more info on the RasterRow and RasterSegment classes are available here:

http://pygrass.readthedocs.org/en/latest/raster.html



Comments are welcome!

Best regards,

Pietro


More information about the grass-dev mailing list