On 13 February 2011 02:58, Levente Uzonyi <leves@elte.hu> wrote:
On Sun, 13 Feb 2011, Igor Stasenko wrote:
Please read the Ian's paper about switch statement vs message sends.. You will discover something surprising for you.
Link please?
Here: www.piumarta.com/pepsi/objmodel.pdf- ------------------- Lastly, we implemented the example presented in Section 2 of this paper: data structures suitable for a Lisp-like language. We implemented a âtraditionalâ length primitive using a switch on an integer tag to select the appropriate implementation amongst a set of possible case labels. This was compared with an implementation in which data was stored using our object model and the length primitive used send to invoke a method in the objects themselves.7 Both were run for one million iterations on forty objects, ten each of the four types that support the length operation. The results, with varying degrees of object model optimisations enabled, were: implementation time % of switch switch-based 503 ms 100.0% dynamic object-based 722 ms 69.7% + global cache 557 ms 90.3% + inline cache 243 ms 207.0% This shows that an , object-based implementation can perform at better than half the speed of a typical C implementation for a simple language primitive. With a global method cache (constant overhead, no matter how many method invocation sites exist) the performance is within 10% of optimised C. When the inline cache was enabled the performance was better than twice that of optimised C. ---------------------
Levente
-- Best regards, Igor Stasenko AKA sig.