The modules created are robust in that they are isolated from changes made in other modules, they are maintainable in that the engineers need not fear that changes in one module will ripple to other modules, and they are reusable in that the high level modules do not depend upon the low level details, and so can be reused in a different detailed context. Run Time Efficiency. However, the mechanisms employed by the two different language types are very different. In dynamically typed languages, every run time binding is looked up in a table of some kind. Although table lookups can be very fast, they still involve a loop, and a token matching algorithm.
Hash tables are common, and some calls can even be resolved at compile time.
Generally, however, it is impossible to precisely describe the time required for such an operation. And generally the operation requires dozens, or even hundreds of microseconds. Since a well designed object oriented program will make the majority of its function calls via this mechanism, the runtime overhead of a dynamic type system can be significant. In statically typed languages, run time bindings are performed by indexing into a table of pointers. This operation always requires exactly the same amount of time, and can be theoretically reduced to a single index into an array followed by a single pointer dereference.