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
.