Context
My application model is a tree of objects, where each object represents an element of the file system (folder or file) on the disk under this initial folder.
Periodically, I recursively move this tree from top to bottom to “synchronize” it with the actual state of the file system. That is, I visit every object in the model and verify that the file / folder that it represents still exists in the same place on the disk.
If the file / folder is moved, I use the NSURL tab to determine the new location of the file / folder to update the state of the model. (I create the NSURL bookmark when I first create the model object and then save the bookmark data as a property of the object, so that I can enable it later.)
Problem
Bookmarks
NSURL simply not effective enough. It is not uncommon for my model graph to have 20,000 nested objects. Everyone has a bookmark. Here is what I see when I show performance:

The recursivelyValidateExistingChildItemsOfParentItem:... method is what walks through the model tree. 90% of the time is simply resolving bookmarks (and, if they’re out of date, re-creating them as described in the Apple documentation).
Moreover, the application takes almost 2 minutes to complete the walk. So I need a faster alternative to NSURL bookmarks.
What i reviewed
Extended file attributes. I can add a UUID attribute for each file on disk. Instead of going around my model graph, I could go to the actual file system under the start folder. When I find a new file, I see if it has an extended UUID attribute. If so, I could then search my model graph for an object with this UUID to handle moved / moved files. The problem here is that many clobber things have extended file attributes - they are not guaranteed. [/ P>
BDAlias or NDAlias . I used to use BDAlias before switching to NSURL bookmarks, but it wasn’t quite more productive.
Bottom line
I need a faster alternative to NSURL bookmarks. But I still need to keep track of the files during the launch of my application, so just saving file descriptors or using a file identifier will not work.
I don't care how I should get low; I just need performance. Thanks!
Bryan source share