Browse thread
[Caml-list] Object-oriented access bottleneck
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Olivier Andrieu <andrieu@i...> |
| Subject: | Re: [Caml-list] Object-oriented access bottleneck |
Nuutti Kotivuori [Tuesday 9 December 2003] : > > Nicolas Cannasse wrote: > > Obj.set_field (Obj.repr (Some 0)) 1000000 (Obj.repr ()) > > > > But I'm quite surprise that's it's not inlined and slower than > > setting a record field (according to the bench results)... and even > > slower than calling method (???) > > The implementation of Obj.set_field is: > > external set_field : t -> int -> t -> unit = "%obj_set_field" > > Where %obj_set_field is merely: > > Parraysetu Pgenarray; > > from the primitives_table, which is pretty generic. > > I am not sure why it isn't inlined either. It doesn't get inlined even > when having the declaration in the same source file. What are you talking about ? The Obj module and in particular Obj.set_field is about modifying caml values (records, variants, tuples, whatever), not caml objects. Access to instance variable in objects is not inlined because you can't statically known in which slot is the variable. Ex: class foo = object val x = 0 end class bar = object val y = 1 inherit foo end In an object foo, x is in slot 0, but in an object bar, x is in slot 1. (Actually that's not 0 and 1 but 2 and 3 because the object stores other stuff in the first two slots). -- Olivier ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners