I also use ent_next, but I only use it prior to the entity's main loop. So will use it once at the beginning of a particular level, and it will assign the found entity to a ENTITY* pointer, for use later in the level...

dtimer() seems like it might be very useful in helping me find the bottlenecks, so I will check that out.