I'd like to reproduce this bug, what version of ArcGISServer are you using? I have the following code, please let me know if it needs to be tweaked to get the same performance slowdown that you are experiencing. I will be testing it against latest and previous releases. Using the code below, I did not experience a slowdown between 2.1, 2.2. and latest. If you can share service and/or code, that would help us reproduce the bug and hopefully fix it. Thanks.What I've noticed is that there seems to be no difference in server response for ReturnGeometry=True and ReturnGeometry=False using sampleserver3. I just learned that this is a known server bug that is planned to be fixed in future releases.
xmlns:esri="http://schemas.esri.com/arcgis/client/2009">
<Grid x:Name="LayoutRoot" Background="White">
<esri:Map WrapAround="True" x:Name="MyMap">
<esri:ArcGISTiledMapServiceLayer ID="MyLayer"
Url="http://services.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer" />
<esri:GraphicsLayer ID="MyGraphicsLayer">
<esri:GraphicsLayer.Renderer>
<esri:SimpleRenderer>
<esri:SimpleRenderer.Symbol>
<esri:SimpleMarkerSymbol Color="Red" Size="15" Style="Circle"/>
</esri:SimpleRenderer.Symbol>
</esri:SimpleRenderer>
</esri:GraphicsLayer.Renderer>
</esri:GraphicsLayer>
</esri:Map>
<StackPanel VerticalAlignment="Top" HorizontalAlignment="Center">
<Button Content="Query" Click="Button_Click"/>
<CheckBox x:Name="ReturnGeom" IsChecked="False"/>
</StackPanel>
</Grid>
DateTime started;
private void Button_Click(object sender, RoutedEventArgs e)
{
var queryTask = new QueryTask("http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Earthquakes/EarthquakesFromLastSevenDays/FeatureServer/0")
{
DisableClientCaching = true
};
var query = new Query() { ReturnGeometry = ReturnGeom.IsChecked.Value , Where = "1=1"};
queryTask.ExecuteCompleted += new EventHandler<QueryEventArgs>(queryTask_ExecuteCompleted);
started = DateTime.Now;
queryTask.ExecuteAsync(query);
}
void queryTask_ExecuteCompleted(object sender, QueryEventArgs e)
{
var elapsed = DateTime.Now.Subtract(started).TotalMilliseconds;
System.Diagnostics.Debug.WriteLine("Elapsed time (ms): {0}", elapsed);
(sender as QueryTask).ExecuteCompleted -= queryTask_ExecuteCompleted;
var l = MyMap.Layers["MyGraphicsLayer"] as GraphicsLayer;
if (e.FeatureSet != null)
{
foreach (var f in e.FeatureSet.Features)
l.Graphics.Add(f);
}
}