We have developed a relatively complex geoprocessing routine using a C# / ArcObjects (COM) / ArcGIS Server 9.3.1 / ArcSDE 9.3.1 / Oracle 11g stack. Running the routine on a complete dataset takes many, many days and often does not complete.
Troubleshooting is hindered by the opaque nature of COM and the many levels of abstraction.
Specifics aside, could anyone suggest a heuristic for troubleshooting performance problems with ArcObjects? Hopefully the answer could be useful to others.
Edit: Using a profiler (JetBrains dotTrace), I can see that my problem calls are: ITable.GetRow
, ITable.Select
, ICursor.NextRow
, ITable.Search
, ISelectionSet.Search
, ISelectionSet.get_IDs
, IFeatureClass.Select
, and IFeatureClass.GetFeature
.
Best Answer
You should broaden your search to beyond ArcObjects as suggested in the comments to one of the other answers. Every single one of the methods you list are database access related.