I have a situation where I am looking up a record by search criteria. The search table is expected to be large, very large even, and so I am doing it in a 2 part process. 1) OclPs.Execute() and if not found there, 2) Ocl.Evaluate() against allLoadedObjects - part 2 is because the one I am looking for might be a new one in memory.
I know I only had a small number of objects loaded and so I was surprised to see that the Execute (754ms) was better than twice as fast as the Evaluate (1692ms) so I drilled down into the Evaluate() to see what took so long. It spent nearly all of it's time in AcceptVisitor (1529ms) and only a very small amount of time in GetEntry (158ms). SEE ATTACHED PIC
My questions are: 1) What is it doing in that function that takes so long (relatively)? and 2) Can I avoid it or make it faster?