The compiler can work out where the
called function will be at compile
The compiler can guarantee early
(before any of the programs code
runs) that the function will exist
and be callable at runtime.
The compiler guarantees that the
function takes the right number of
arguments and that they are of the
correct type. It also checks that the
return value is of the correct type.
The lookup will take longer because
its not a simple offset calculation,
there are usually text comparisons to
The target function may not exist.
The target function may not accept
the arguments passed to it, and may
have a return value of the wrong
With some implementations, the target
method can actually change at
run-time. So, the lookup may execute
a different function. I think this
happens in the Ruby language, you can
define a new method on an object
while the program is running.
Late-binding allows function calls to
start calling a new override for a
method instead of calling the
existing base method.