Looks like the version of Visual Studio I'm working in doesn't have a profiler. But my performance jumps right back up to full speed if I cut the contents of the draw loop. For full disclosure, this is what things look like:
while (App.IsOpened()){
//stuff
System::Draw(position, App, Player, Mobile, Immobile);
//stuff
}
void System::Draw(b2Vec2 position, sf::RenderWindow &App, PlayerObject &Player, std::vector<std::shared_ptr<MobileObject>> &Mobile, std::vector<std::shared_ptr<ImmobileObject>> &Immobile){
position = Player.Body->GetPosition();
Player.Sprite.SetPosition(10*position.x, -(10*position.y));
if(Player.isVisible) App.Draw(Player.Sprite);
for(std::vector<std::shared_ptr<ImmobileObject>>::iterator it = Immobile.begin(); it !=Immobile.end(); it++){
App.Draw((*it)->Sprite);
}
for(std::vector<std::shared_ptr<MobileObject>>::iterator it = Mobile.begin(); it !=Mobile.end(); it++){
position = (*it)->Body->GetPosition();
(*it)->Sprite.SetPosition(10*position.x, -(10*position.y));
App.Draw((*it)->Sprite);
}
}