The way you have it coded, it will only do frames when events are in the queue, which is why you're getting such a low framerate.
Also when you're not running frames, you're spinning which is why you're eating up 100% CPU time.
The proper way to have a game loop would be like this:
while(_render.IsOpened())
{
// empty the event queue
sf::Event currentEvent;
while(_render.PollEvent(currentEvent)) // <- while, not if
{
// notice in here we only do event stuff. Do not render the scene here
if(currentEvent.Type == currentEvent.Closed)
_render.Close();
}
// NOW render the scene
_render.Clear();
_render.Display();
}
The idea is you want to render scenes unconditionally in a continuous loop. The PollEvent thing just checks to see if any events have occurred that need your attention.