Hi Thierry, On Jan 16, 2015, at 8:10 AM, Thierry Goubier <[email protected]> wrote:
> > > 2015-01-16 16:55 GMT+01:00 Eliot Miranda <[email protected]>: >> Hi All, >> >> On Jan 16, 2015, at 7:36 AM, Eliot Miranda <[email protected]> wrote: >> >> > Hi Marcel, >> > >> > On Jan 16, 2015, at 5:54 AM, Marcel Taeumel >> > <[email protected]> wrote: >> > >> >> Ah, okay. I was curious about the performance of iterating over an array >> >> vs. >> >> the linked list: >> >> >> >> a := Array new: 1000. >> >> l := LinkedList new. >> >> >> >> 1000 timesRepeat: [l add: (StackLink with: nil)]. >> >> >> >> [a do: [:ea | 1 + 2]] bench. "'94,600 per second.'" >> >> >> >> [l do: [:ea | 1 + 2]] bench. "'159,000 per second.'" >> >> >> >> I expected the opposite! :-O Why is that so? >> > >> > Look at the implementations of do:. >> > >> > In the Array case we iterate over the indices using SmallIntegers (fast >> > arithmetic with no allocation) and dereference each element using the >> > Object>>at: primitive, which (apart from type and bounds checking) is >> > simple indexed memory access. So one read per element. >> > >> > In the LinkedList case each list element is fetched from the previous >> > element and each value fetched from the element, so two reads per element. >> >> This is interesting. (Marcel, Chris, forgive me; I'm presuming; please >> don't take this personally). Marcel above appears to lack an intuition >> about the structure of Array vs LinkedList. And in developing a hash >> algorithm for a 32-bit subset of Floats a few weeks ago Chris appeared to >> lack an I tuition about Floats being boxed, assuming they were value types, >> not containers. >> >> As a VM implementer I carry around a clear picture (literally, I am a visual >> thinker) of objects in my head. Those pictures are key to my approach to >> design and optimization. >> >> I presume that for someone approaching the system given only a textual >> description of object structures, through class comments and method source >> it is difficult to develop a good picture or mental model. For me, I read >> the blue book first, which is replete with pictures. >> >> I know that historically visual inspector frameworks such as Jun have been >> able to auto-generate pictorial representations of specific object graphs. >> I wonder how useful it would be to provide support for designers to include >> pictorial representations in class comments. >> >> Again I presume that the text model would have to support inclusion of >> simple bitmaps (to avoid having to include a full drawing framework in the >> system) and that the designer would construct a sample graph, generate a >> diagram using a visual inspector framework using eg Jun, render it to a >> bitmap and include it in the class comment. > > > >> >> A more elaborate system could of course include the sample graph and render >> it dynamically, that would allow exploration. >> >> Either approach would make an interesting project, yes? > > I would prefer something conceptually simpler and worthwhile: the ability to > embed a morph as a character in the text (would do the two approaches > easily). And a bit of marshalling/text representation to make a completely > textual representation possible. Yes that's a *much* better idea and one we could realize v quickly. > > I used to have that for hypermedia (i.e. a drawing editor with text frame > objects, and text frames able to display GUI components... in ParcPlace > Smalltalk) > > Now I dream a bit of having something like TiddlyWiki in Pharo ;) > > Thierry >
