Runtime Method Binding
The following ECMAScript function receives an object, invokes its toString-method and displays the results on the page the script is embedded in.
function dump(obj) { document.write(obj.toString); }Since the type of the object is not specified and because of potential method overloading, it is impossible to decide ahead of time, which concrete implementation of the toString-method is going to be invoked. Instead, a dynamic lookup has to be performed at runtime. In language runtimes that do not employ some form of caching, this lookup is performed every time a method is invoked. Because methods may be defined several steps down the inheritance chain, a dynamic lookup can be an expensive operation.
To achieve better performance, many language runtimes employ some form of non-inline caching where the results of a limited number of method lookups are stored in an associative data structure. This can greatly increase performance, provided that the programs executed are "cache friendly" (i.e. there is a limited set of methods that is invoked frequently). This data structure is typically called the first-level method lookup cache.
Read more about this topic: Inline Caching
Famous quotes containing the words method and/or binding:
“English! they are barbarians; they dont believe in the great God. I told him, Excuse me, Sir. We do believe in God, and in Jesus Christ too. Um, says he, and in the Pope? No. And why? This was a puzzling question in these circumstances.... I thought I would try a method of my own, and very gravely replied, Because we are too far off. A very new argument against the universal infallibility of the Pope.”
—James Boswell (17401795)
“With a binding like youve got, people are gonna want to know whats in the book.”
—Alan Jay Lerner (19181986)