Explain the difference between compilation and interpretation in programming languages, and how it impacts execution speed.