Interpreter:
Translates program one statement at a time.
Interpreters usually take less amount of time to analyze the source code. However, the overall execution time is comparatively slower than compilers.
No intermediate object code is generated, hence are memory efficient.
Compiler:
Scans the entire program and translates it as a whole into machine code.
Compilers usually take a large amount of time to analyze the source code. However, the overall execution time is comparatively faster than interpreters.
Generates intermediate object code which further requires linking, hence requires more memory.