Types of spatial partitioning

I have a 2D tile based game with dynamic entities and am wondering how I should group the different types of entities I have. I want to use frustum culling to limit the number of draw calls, however I don’t want to check every single tile every frame. The same goes for my dynamic entities. I’ve decided that a quadtree is probably best for the enemies and such since they move around so much, however I’ve heard quadtrees are inefficient on modern day CPUs. Obviously, quadtrees would not be used to group together static tiles either. So my question is; what should I use to group the two types of entities I have?