Lets look at a single enemy, how exactly are you gathering the information from around the enemy. Lets say you have 1 enemy and 10 objects spread throughout the world. How would each enemy check these 10 objects, and what are they looking for from them?
Edit: There are certain things that do run very slow in blueprint compared to C++.