Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [udig-devel] Efficiency problem with filtered Feature Collections

Hi again, 

we have studying the matter. Here we show the results.
(we hope this not bore you :) ... )

[OPTION 1("Without AddAll")]

//Query
q = new DefaultQuery(pointsSource.getSchema().getTypeName(),
                    dWithinFilter, new String[]{
                    pointsSource.getSchema().getDefaultGeometry().getName(),
                    "ATRIB"});
pointFeatCollAux = pointsSource.getFeatures(q);

//Filter
pointFeatCollAux = pointsSource.getFeatures(dWithinFilter);

//FeatureCollection Visitors...
pointFeatCollAux.accepts(averageVisitor, null);
average = ((Double) averageVisitor.getAverage()).doubleValue();

pointFeatCollAux.accepts(countVisitor, null);

pointFeatCollAux.accepts(minVisitor, null);

pointFeatCollAux.accepts(maxVisitor, null);

pointFeatCollAux.accepts(medianVisitor, null);

pointFeatCollAux.accepts(sumVisitor, null);

desvVisitor = new StandardDeviationVisitor(pointAttrib, media);
pointFeatCollAux.accepts(desvVisitor, null);

======= Poly geom #1
======= Starting Query!
  .... doing average 9812.0ms
  .... doing count 9328.0ms
  .... doing min 9391.0ms
  .... doing max 9859.0ms
  .... doing median 9594.0ms
  .... doing sum 9672.0ms
  .... doing desviation 9516.0ms
  
   Count: 3592
  [Min, Max]: [4342, 30771]
  Average: 22036.477171492206
  Median: 27804.0
  Sum: 79155026
  Desviation: 8043.5832852906815
  Query Time: 67187.0ms
  Number of Features: 3592

======= Starting Filter!
  .... doing average 9500.0ms
  .... doing count 9672.0ms
  .... doing min 9578.0ms
  .... doing max 9578.0ms
  .... doing median 9687.0ms
  .... doing sum 9610.0ms
  .... doing desviation 9562.0ms
  
   Count: 7184
  [Min, Max]: [4342, 30771]
  Average: 22036.477171492206
  Median: 27804.0
  Sum: 158310052
  Desviation: 8043.5832852906815
  Filter Time: 67187.0ms
  Number of Features: 3592
=====================

======= Poly geom #2
======= Starting Query!
  .... doing average 14922.0ms
  .... doing count 14937.0ms
  .... doing min 14860.0ms
  .... doing max 14843.0ms
  .... doing median 14922.0ms
  .... doing sum 14906.0ms
  .... doing desviation 14750.0ms
  
   Count: 14638
  [Min, Max]: [1517, 37134]
  Average: 17940.582251673724
  Median: 16151.0
  Sum: 262614243
  Desviation: 13578.054140641521
  Query Time: 104140.0ms
  Number of Features: 7454

======= Starting Filter!
  .... doing average 14734.0ms
  .... doing count 14704.0ms
  .... doing min 14718.0ms
  .... doing max 14469.0ms
  .... doing median 14578.0ms
  .... doing sum 14844.0ms
  .... doing desviation 14641.0ms
  
   Count: 22092
  [Min, Max]: [1517, 37134]
  Average: 16608.656255658156
  Median: 15242.5
  Sum: 366918434
  Desviation: 13252.242758512577
  Filter Time: 102703.0ms
  Number of Features: 7454
=====================

..........
..........
..........
..........


[OPTION 2("With AddAll")]

// Query
q = new DefaultQuery(pointsSource.getSchema().getTypeName(),
    dWithinFilter, new String[]{
    pointsSource.getSchema().getDefaultGeometry().getName(),
    cBoxFields.getText()});

pointFeatCollAux = FeatureCollections.newCollection();
pointFeatCollAux.addAll(pointsSource.getFeatures(q));

//Filter
pointFeatCollAux = FeatureCollections.newCollection();
pointFeatCollAux.addAll(pointsSource.getFeatures(dWithinFilter));

//FeatureCollection Visitors...
pointFeatCollAux.accepts(averageVisitor, null);
average = ((Double) averageVisitor.getAverage()).doubleValue();

pointFeatCollAux.accepts(countVisitor, null);

pointFeatCollAux.accepts(minVisitor, null);

pointFeatCollAux.accepts(maxVisitor, null);

pointFeatCollAux.accepts(medianVisitor, null);

pointFeatCollAux.accepts(sumVisitor, null);

desvVisitor = new StandardDeviationVisitor(pointAttrib, media);
pointFeatCollAux.accepts(desvVisitor, null);

======= Poly geom #1
======= Starting Query!
  .... doing average 0.0ms
  .... doing count 0.0ms
  .... doing min 0.0ms
  .... doing max 0.0ms
  .... doing median 16.0ms
  .... doing sum 0.0ms
  .... doing desviation 15.0ms
  
   Count: 3592
  [Min, Max]: [4342, 30771]
  Average: 22036.477171492206
  Median: 27804.0
  Sum: 79155026
  Desviation: 8043.583285290676
  Query Time: 9515.0ms
  Number of Features: 3592
======= Starting Filter!
  .... doing average 0.0ms
  .... doing count 0.0ms
  .... doing min 16.0ms
  .... doing max 0.0ms
  .... doing median 0.0ms
  .... doing sum 0.0ms
  .... doing desviation 0.0ms
  
   Count: 7184
  [Min, Max]: [4342, 30771]
  Average: 22036.477171492206
  Median: 27804.0
  Sum: 158310052
  Desviation: 8043.583285290676
  Filter Time: 9532.0ms
  Number of Features: 3592
=====================

======= Poly geom #2
======= Starting Query!
  .... doing average 0.0ms
  .... doing count 0.0ms
  .... doing min 0.0ms
  .... doing max 0.0ms
  .... doing median 0.0ms
  .... doing sum 0.0ms
  .... doing desviation 15.0ms
  
   Count: 14638
  [Min, Max]: [1517, 37134]
  Average: 17940.582251673724
  Median: 16151.0
  Sum: 262614243
  Desviation: 13578.05414064152
  Query Time: 14343.0ms
  Number of Features: 7454

======= Starting Filter!
  .... doing average 0.0ms
  .... doing count 0.0ms
  .... doing min 0.0ms
  .... doing max 0.0ms
  .... doing median 0.0ms
  .... doing sum 0.0ms
  .... doing desviation 15.0ms
  
   Count: 22092
  [Min, Max]: [1517, 37134]
  Average: 16608.656255658156
  Median: 15242.5
  Sum: 366918434
  Desviation: 13252.242758512582
  Filter Time: 14328.0ms
  Number of Features: 7454
=====================

..........
..........
..........
..........

In conclussion, there aren't difference between Query or Filter implementation
but we can see that using "clone" Feature Collections (addAll method) we save 
near (67187-9532)ms in poly#1 and (102703-14328)ms in poly#2.

Does it have any sense?? :S

Thanks!

Antonio Redondo Lora
Subdirección de Integración de Sistemas
E.P. Desarrollo Agrario y Pesquero 
c/Bergantín, 39 - 41012 Sevilla.  España
Email: becarlora@xxxxxx
Tlfno: 955059762
Corporativo: 359762



 -----------------------------------------------------
  Este correo electrónico y, en su caso, cualquier fichero anexo
  al mismo, contiene información de carácter confidencial
  exclusivamente dirigida a su destinatario o destinatarios. Queda
  prohibida su divulgación, copia o distribución a terceros sin la
  previa autorización escrita de Dap. En el caso de haber
  recibido este correo electrónico por error, se ruega notifíquese
  inmediatamente esta circunstancia mediante reenvío a la dirección
  electrónica del remitente.
  ----------------------------------------------------------
  The information in this e-mail and in any attachments is confidential
  and solely for the attention and use of the named addressee(s).
  You are hereby notified that any dissemination, distribution or copy
  of this communication is prohibited without the prior written consent 
  of Dap. If you have received this communication in error,
  please, notify the sender by reply e-mail.
  -------------------------------------------------------------

Back to the top