The libraries are not at fault, you should try and set Vertical sync trough the sf::Window class to false.
http://www.sfml-dev.org/documentation/2.0/classsf_1_1Window.php#a824ae1c61ddf2b45f7fa00472f0b6b4e
Also my point was that you actually do loop trough every tile even if they are not shown. If that is done every frame you will get an FPS drop, especially if you do it in debug with STL containers.
Anyway I seem having a hard time understanding what you are actually doing.
Because the impression I get is that you are never moving the camera? You add the visible tiles once to the map variable and then the variable is never touched other to iterate trough for rendering? And map ONLY contain the tiles that are visible? But the camera, or whatever you have to represent a camera, never moves? How large are your tiles actually?
Also try some lightweight benchmarking, try and comment out parts of code you think is the culprit, like the actual call to sf::Window::Draw and compare how much your FPS go up.
Also about RenderImage, what you can do there to speed it up is that if you got a static background(tiles don't animate or change often and so on) then you can render the tiles to the render image at initiation/loading. Then use that image to render as a background in the actual window. So instead of rendering 3k+ Tiles you only render one gigantic image instead.
Sorry if I wasn't clear Groogy. But you got it, right now I don't have a camera, it's never touched or moved again. All tiles on map are visible. It was just a test to see how fast it can go. I'm going to implement the camera and add all tiles when I get it work faster. The tiles are 16x16. Here are my constants:
const int SCREEN_WIDTH = 1024;
const int SCREEN_HEIGHT = 768;
const int SCREEN_HORIZONTAL_TILES = SCREEN_WIDTH / 16;
const int SCREEN_VERTICAL_TILES = SCREEN_HEIGHT / 16;
const int SCREEN_BPP = 32;
const int FRAMES_PER_SECOND = 30;
const int TILESET_WIDTH = 256;
const int TILESET_HEIGHT = 704;
const int TILESET_HORIZONTAL_TILES = TILESET_WIDTH / 16;
const int TILESET_VERTICAL_TILES = TILESET_HEIGHT / 16;
const int TILE_WIDTH = 16;
const int TILE_HEIGHT = 16;
The Vertical Sync didn't change anything. When I commented draw, FPS went to between 500 and 1000 (to calculate it I'm simply doing 1000.f / window.GetFrameTime())
Would the RenderImage give me a better speed? I will have to move camera in the future though.
Thanks again!