Rephrasing of the question slightly to address some issues.

Is there are standard way of measuring load times for data, specifically sybolised data, within ArcMap?

In particular, we're comparing load times of different data formats (shapefile, SDE, file and personal geodatabases) across the network for the same (large) sets of data. We're also aiming to test speeds between ArcGIS versions.

At this point I've started hacking together a simple VB script to do some of the timing without having to sit there with a stopwatch as @matt-wilkie suggested. The script (thus far) can be found at http://textsnip.com/8912ac/vb. The script was written in ArcGIS 9.3 but works in 9.2 as well.

To use the script, copy the VB script to your mxd, and add two buttons, called "LoadDatasets" and "SymboliseDatasets". The LoadDatasets button allows the load of one or more feature classes or layers, and times the load. SymboliseDatasets checks the number of layers in the ActiveView, and if there are none, calls the load dialog (but doesn't time it). Once layers are added then the SymboliseDatasets button will symbolise all layers into 10 quantile groups based on their FIDs.

I have fixed the issue of timing the rendering by adding a DoEvents after the ActiveView.Refresh

In the meantime if anyone wants to pick this script up and modify it to make it more useful I'm happy to set this question to community wiki.

  • It is not clear to me if you are loading data into ArcSDE. If so, "sybolised" (sic) doesn't make sense. Otherwise are you interested in time it takes for arcmap to load an mxd referencing these datasets? Commented Aug 18, 2010 at 14:27

6 Answers 6


We use a stopwatch and a spreadsheet, and measure (a) time from initial load to spinny-globe-refresh stops spinning, (b) time to refresh (press refresh button), (c) zoom to scale N, (d) zoom to scale NN, (f) pan. Repeat at least 3 times for each datastore. Repeat again at different times of day to account for network usage patterns by others.

The results are pretty rough and the testing labour intensive but better than nothing. A script to do the same which could be automated would be awesome. Some test runs had to be repeated more than 10 times because there was so much variability in the results, I assume from network traffic or perhaps intense fileserver disk activity.

The last time I did this, a couple of years ago, indexed shapefiles were the fastest, closely followed by file geodatabases, then SDE, and personal geodatabases dead last. This is averaged results; our SDE datastore was faster at certain scales but not overall for example. The fastest raster was ECW, which is lossy unfortunately. Fastest lossless was geotiffs with pyramids.


Interesting question. Unfortunately, I cannot fully answer it, but still would like to mention some related tools for measuring performance:

(Both of these are also mentioned in this blog article.)


I attempted much the same thing a couple of years ago (maybe '07). I had written a very, buggy command button in VB6 to record the draw time and flush to a CSV file. I really had trouble w/ sorting out the events and it ended up easier to just use a stopwatch and do it Matt's way!

If the Oberon toolbar for ArcMap is floating around on the 'net--it's on that toolbar and you have to enable the tool in an xml file.

This toggle button will record the time it takes to redraw the map frame in ArcMap. When toggling the button off, the timing data is flushed to a CSV file in the temp directory which can be opened in a spreadsheet or imported into a database.

**Note: After each redraw, the elapsed time will be displayed briefly in the message pane. When you hover over another tool, that tool's message will be displayed. The actual data is in memory and will be written to the CSV file when you turn off the ArcMap Redraw Timer.

2008-05-07: Added the ArcMap Redraw Timer button. To enable, you must have the following XML tag in your

OberonConfig.xml file:

  • I'd love to use Oberon, but it looks like it's dead I'm afraid.
    – om_henners
    Commented Aug 19, 2010 at 2:46

Check the Geodatabase toolset. I think it should give at least some of the functionality you need.

  • the GDBT toolset measures performance on the server and only applies to SDE geodatabases. Commented Aug 18, 2010 at 8:11

Another Suggestion

Arc-o-meter http://arcscripts.esri.com/details.asp?dbid=15347

dependent on your exact requirements.

  • this would be a better answer if it included a short summary of what the destination tool/page did or was about. Commented Aug 18, 2010 at 16:41

Your scenario would best be served by an Esri created tool called MXDPerfStat. Easier to leverage what exists as opposed to building a tool.

MXDPerfStat will accurately clock draw times of each layer at each scale - completely customizable by you. Just take an existing .mxd and point the tool at it. You can specify specific x/y coordinates and scale ranges if desired. Otherwise, the tool will infer based on the contents of the mxd.

More detail and examples of the report output, as well as a sample command to run the tool can be found here: http://spatialdude.com/WP/?p=41

Feel free to contact me if you have questions as this is a tool I use often and have always been impressed with results.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.