I am working on a little game engine. All major features are implemented yet, despite game logic which I assume not to be such a computational effort. The framerate is at least around 40 FPS, most of the time above 60 FPS.
I would like to speed up my engine now. There are several performance heavy tasks, like physics simulation and collision detection where I use Bullet Physics for, geometry drawing and texturing, deferred lighting, post effects like SSAO. Later on maybe character animation and artificial intelligence may add up.
How to find the bottleneck in such a typical OpenGL game? I am not familiar with profilers, and I have no idea how to use them, especially with asynchronous code like Bullet Physics.