Hamish wrote on 09/10/2007 05:52 AM: > Glynn Clements wrote: > >> Markus Neteler wrote: >> >>> when using g.mlist in mapsets with thousands of maps in >>> it (as happens with MODIS time series), it gets extremely >>> slow. >>> > .. > Glynn Clements wrote: > >> The main thing which stands out is that it invokes "grep" once for >> every name returned by g.list: >> > > > Hi, > > see attached patch for consideration. Following Glynn's suggestion it > gets rid of the loop for each map name, making the script ~50% faster > than before, but still about twice as slow as a single call to g.list. > > I haven't put it in CVS as I haven't really tested it. > > I have made these tests:
for i in `seq 1 2000` ; do r.mapcalc map$i=1 ;done # old g.mlist time g.mlist type=rast pat="map*" real 0m7.496s user 0m2.417s sys 0m4.983s # new g.mlist time g.mlist type=rast pat="map*" real 0m0.230s user 0m0.157s sys 0m0.058s => 0.230/7.496 = 0.031 for i in `seq 1 10000` ; do r.mapcalc map$i=1 ;done # old g.mlist real 0m54.725s user 0m24.809s sys 0m28.944s # new g.mlist real 0m0.416s user 0m0.229s sys 0m0.087s => 0.416/54.725 = 0.0076 # paranoia test: new g.mlist g.mlist type=rast pat="map*" | wc -l 10000 Amazing! Also g.mremove will be finally fast then since it calls g.mlist. Markus ------------------ ITC -> dall'1 marzo 2007 Fondazione Bruno Kessler ITC -> since 1 March 2007 Fondazione Bruno Kessler ------------------ _______________________________________________ grass-dev mailing list [email protected] http://grass.itc.it/mailman/listinfo/grass-dev

