I'm not sure why but I've found using 'Locate Features Along Routes' with polygons to really drag. On a feature class with ~10,000 polygons and a route file with 10-20 lines it can take upwards of 30 minutes to run. Granted, all of my data is on network drives but I've found that an Intersect gets the job done much more quickly with a couple of additional steps.
My workflow is something like this: 1. Intersect (polygons to be located with your route lines) 2. Add 'FMEAS' and 'TMEAS' fields 3. Explode all of the multi-part features to single part (either with 'Multipart to Singlepart' or using the Advanced Editing tool. 4. Use the Field Calculator with the following Python expressions to get your M-coordinates: a) !SHAPE!.firstPoint.M b) !SHAPE!.lastPoint.M 5. OPTIONAL step of exporting attribute records to a table, in case you want a similar output to the 'Locate'
On the same inputs, the Intersect runs in under a minute versus the original 30-plus minutes and the additional steps should take less than five. I hope this helps someone!
Also, does anybody know why Locating polygons is slow?
EDIT: I discovered one caveat to using this method after originally posting; if a route line crosses a polygon more than once the calculated from and to measurements can mis-behave due to the creation of multipart features by Intersect. I've modified the proposed workflow to circumvent this.