C++のコンパイラは事前コンパイラだから
実行前にはプログラム全体のネイティブコードが得られるが
プログラム全体を無差別に最適化する分コンパイルに時間が掛かるし
実行時の状況を見て最適化する事も出来ない

JITコンパイルは実行時によく使われたコードだけを最適化するから割と高速に実行できる事が多い

http://ja.wikipedia.org/wiki/実行時コンパイラ