I wonder, is it possible to implement a something which will learn till code runs? Lets say i have in some method a block, which invokes code for accessing some db objects and/or does some manipulations with them. What if at first invocation startup magma will learn from this process, so the next time it enters this block of code, it will already know how deep particular object types must be read to be optimal for speed/space?
something as easy as:
handle := session captureReadStrategy: [ some code ].
and then:
session withReadStrategy: handle do: [ some code ].
or ever: session useAndCapture: handle do: [some code].
I think it can be clever enough to use as default approach for creating read strategies, so developers will be freed from making tons of tests and supposes for making static read strategies work fine with their code.
Even, if its not or hard to adopt, i think some analysis can be done while running user code (like messagetally), so developer can then make decisions based on it.
That's a neat idea, and there is already MagmaProxyMaterialization notification which *may* help to implement it.
However, I'm wondering whether it is necessary to be so precise. At most, only two strategy's for most kinds of objects are really needed; one for a "summary" (as in displaying in a list) and one for "detail". I would think err'ing on the side of being liberal would optimise performance.
In fact, I have been thinking whether the minimumDepth should be bigger; at least 2, maybe 3, and 4 to be agressive..? Anyone have any thoughts on that?
I know everyone wants Magma to be faster, but ReadStrategy's will only take us so far, I hope to find time to look at other areas that can be improved.. (and welcome ideas from who has themselves looked into it, of course).
On 8/15/07, Igor Stasenko siguctua@gmail.com wrote:
I wonder, is it possible to implement a something which will learn till code runs? Lets say i have in some method a block, which invokes code for accessing some db objects and/or does some manipulations with them. What if at first invocation startup magma will learn from this process, so the next time it enters this block of code, it will already know how deep particular object types must be read to be optimal for speed/space?
something as easy as:
handle := session captureReadStrategy: [ some code ].
and then:
session withReadStrategy: handle do: [ some code ].
or ever: session useAndCapture: handle do: [some code].
I think it can be clever enough to use as default approach for creating read strategies, so developers will be freed from making tons of tests and supposes for making static read strategies work fine with their code.
Even, if its not or hard to adopt, i think some analysis can be done while running user code (like messagetally), so developer can then make decisions based on it.
-- Best regards, Igor Stasenko AKA sig. _______________________________________________ Magma mailing list Magma@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/magma
magma@lists.squeakfoundation.org