Dramatic changes in performance depending on selection
Blender selection drawing method is notoriously slow. This well known among the devs and a known limitation of the current system.

Basically highlighting the selection outline doubles the required processing power of regular viewport drawing, yielding almost half the FPS.

Unless you plan on rewritting a whole viewport rendering engine code youself, or a new OpenGL realtime renderer there is not much one can do at the moment, as far as I know, other than await the 2.8 release and its modernized real time rendering based on EEVEE engine.

One possible workaround for the time being is turning off selection highlighting in the * 3D View Properties Region > Display > Outline Selected*, though it is not without its downsides. You won't really know what is currently selected or which is the active object while turned off.