|Compiler works on complete program at once i.e. Compiler take complete program as input.
|Interpreter works line by line i.e. Interpreter takes one line as input at one time instance.
|Compiler generates intermediate code i.e. object code.
|Interpreter does not generate intermediate code.
|Compiler takes more memory as it generates intermediate code which has to be saved in memory.
|Interpreter is memory efficient as it does not generate intermediate object code.
|Programs need to be compiled once and can be run any number of times.
|Interpreter has to work every time for the same program.
|Compiler check the whole program and report all the errors at the end.
|Interpreter report the error as soon as it encounters error and stop working.
|Compiler executes conditional control statements(e.g. if-else, switch) faster than Interpreter.
|Interpreter executes conditional control statements slower than Compiler.