I suspect the details weren't the core of the problem, simply iterating through all the items took too long. If he employed the partial-update method, it's solved.
Exactly. I outlined the basics
here. This leads to several limitations: it takes a while for the items to go from 'unidentified resting object' to identified. And an item in a pile is picked up while it is showing it will keep showing until some other object in the pile is refreshed. This refreshing also means that which object is shown for a pile changes erratically.
There's also a whole bunch of research that needs doing on what the object data means though.
So for example at the moment I'm pretty sure that items being carried are also a candidate for being drawn on the ground (provided theres something else on the ground to trigger the 'item here' indicator). Gotta be some way to pick that up.
Also it may be possible to make the cache a bit smarter. Depending on the way the vector grows, it may be possible to preferentially grab data for new items, so they would be identified faster. Now I think of it, a reverse lookup in the cache might help the item display stop showing items that used to be here. (and could maybe stop the rather ugly blink it has now)
Oh, and I don't seem to have a way to get the DF names of objects, so the configuration is all based on indexes (like for the terrain, but nastier, because you cant mod in different terrain types)