Dear Mondrian friends,
A new cache mechanism has been implemented and some part have been simplified. The goal was to make Package blueprint fast without reducing the speed up for other visualization. The goal has been reached. On my machine, Package Blueprint is snappy (as soon as it got displayed and you do not select anything).
The health report shown below is sensibly the same than the one sent few days ago. However, the new benchmark ("Benchmark many small nodes") is the one that reproduce a situation found in package blueprint. It was costly before this version.
I would like you to try the last version of Mondrian. I tested it against class blueprint and it behaves as it should. However, you may notice some differences. Was the rendering and scrolling faster for you? Are you happy with this new version?
Report produced on 2010-07-16T09:13:19+02:00
System version Pharo-1.1-11400-rc2 of 12 June 2010 update 11400
Benchmark ManyNode (simple rendering of nodes) :
100 nodes => 7 ms
200 nodes => 12 ms
300 nodes => 18 ms
400 nodes => 23 ms
500 nodes => 30 ms
600 nodes => 35 ms
700 nodes => 41 ms
800 nodes => 46 ms
900 nodes => 52 ms
1000 nodes => 58 ms
1600 nodes => 93 ms
3200 nodes => 186 ms
6400 nodes => 373 ms
Benchmark ManyEdges (simple rendering of edges) :
10 edges => 3 ms
20 edges => 9 ms
30 edges => 21 ms
40 edges => 38 ms
50 edges => 65 ms
60 edges => 102 ms
70 edges => 153 ms
80 edges => 223 ms
90 edges => 310 ms
100 edges => 409 ms
200 edges => 5844 ms
300 edges => 37619 ms
Benchmark ManyInnerNodes :
5 nodes => 170 ms
10 nodes => 3012 ms
15 nodes => 11589 ms
Benchmark Displaying ManyInnerNodes :
5 nodes => 152 ms
10 nodes => 1526 ms
15 nodes => 11186 ms
Benchmark Displaying ManyInnerNodesAndEdges :
1 nodes => 9 ms
2 nodes => 239 ms
3 nodes => 3278 ms
4 nodes => 30492 ms
Benchmark Displaying elementAt :
100 nodes => 3 ms
500 nodes => 5 ms
1000 nodes => 9 ms
1500 nodes => 11 ms
2000 nodes => 14 ms
2500 nodes => 16 ms
Benchmark many small nodes :
2000 nodes => 2368 ms
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi Alex,
Previously I reported that the color of text does not appear as it should be, but light... You created the withoutBackground method that works but sometimes.
As I display small fonts, having blurred texts does not help
try this code...
(1 to: 10) do: [:n |
view shape rectangle
borderColor:[ :each| Color blue ].
view node: n forIt: [
view node: (n * 2) using: (view shape rectangle withoutBorder
withoutBackground;
fontColor:[ :each| Color red ];
text:[ :e| e asString ]).
]
].
cheers,
Veronica
Hi,
Alex, was trying a similar example in the easel, and what i found is that the problem of the "root interaction" is not in Mondrian but in Glamour.
Tudor, could you please take a look at this? (the first inspect does not work)
in the easel -> i can see the inspect of the root (first line).
view root interaction action: #inspect.
(1 to: 10) do: [:n |
view shape rectangle
borderColor:[ :each| Color blue ].
view interaction action: #inspect.
view node: n forIt: [
view interaction action: #inspect.
view node: (n * 2).
view shape rectangle withoutBorder.
view interaction action: #inspect.
view node: n forIt: [
view shape rectangle
borderColor:[ :each| Color green ].
view interaction action: #inspect.
view node: (n * 3) ].
view verticalLineLayout.
] ]
but if I draw this inside glamour can't
| browser |
browser := GLMTabulator withStatusbar.
browser column: #one.
browser showOn: #one; using: [
browser mondrian
painting: [:view :number|
view root interaction action: #inspect.
(1 to: number) do: [:n |
view shape rectangle
borderColor:[ :each| Color blue ].
view interaction action: #inspect.
view node: n forIt: [
view interaction action: #inspect.
view node: (n * 2).
view shape rectangle withoutBorder.
view interaction action: #inspect.
view node: n forIt: [
view shape rectangle
borderColor:[ :each| Color green ].
view interaction action: #inspect.
view node: (n * 3) ].
view verticalLineLayout.
] ]
] ].
browser openOn: 10
regards,
Veronica
Hello,
When I want to view the moose menu by right-clicking on a mondrian element,
I have to add this to the script:
view interaction menuMorphBlock: [ :element | element
mooseMenuMorph ].
But, when I also want to have my own specific action:
view item: 'browse code' action: [:element | UIManager
default edit: element sourceCode].
this last one does not appear in the menu.
Is there any way to do that (to have both the moose menu and my own actions
in a same frame)?
Hi Lukas,
The question should be: How many packages are contained in the software you want to analyze ?
I change it and commit a new version.
Thank you Lukas.
Cheers,
Jannik
On Jul 19, 2010, at 11:22 , Lukas Renggli wrote:
> Hi Jannik,
>
> I can't parse:
>
> "How much do you think the number of packages of the software?"
>
> How much what? What is the question?
>
> Lukas
>
> On 19 July 2010 08:36, Laval Jannik <jannik.laval(a)gmail.com> wrote:
>> Hi Pharoers, and Smalltalkers in general,
>>
>> Have you seen waited to assess the cycles in your software? Now you can :)
>>
>> We request some of you to perform an experiment using DSM to see your software package structure and to fix cycles between packages. Our tool shows dependencies between packages and highlight some bad dependencies generating structure cycles. It also helps to understand dependencies.
>>
>> Your goal is to fill a survey using our tool.
>> I prepared a mini-tutorial about DSM and eDSM. It can help you to understand the visualization tool.
>>
>> To ease the use of our tool, I loaded it in a PharoCore1.2. And there are two archives available:
>> - the first contains an image with our tool with a model of Pharo loaded in it, so you can play with our tool on pharo itself. It can be downloaded here: http://dl.dropbox.com/u/7739334/dsmWithPharo.zip. Pay attention, the image is slow.
>> - the second contains the same thing without the model of Pharo. Here, you have to load your code, then populate a moose model and use the tool. It can be downloaded here: http://dl.dropbox.com/u/7739334/dsmWithoutPharo.zip
>> The two archives contain the tutorial and the survey. If you are a pharo integrator, we suggest you to take the one with Pharo model loaded, else the other.
>>
>> To use our tool, load your tool in Pharo. Then do "MoosePanel open", and import your software in Moose by "import from Smalltalk image". When it is imported, select your project in the list on the left of MoosePanel, and select "all model packages" on the list on center.
>>
>> Then, you have two choices:
>> - you can scan all your project: right click on "all model packages" and do DSM.
>> - or select "all model packages" then select some packages in the next list and right click, do DSM.
>>
>> After that, you can perform the survey (with reading of the tutorial). We need your answers for the end of August. So, you have two months to do it.
>>
>> If you have any question, just let me know.
>>
>> Best regards,
>> Jannik.
>>
>> ---
>> Jannik Laval
>> PhD Student - Rmod Team - INRIA
>> Certified Project Management Associate (IPMA)
>> http://www.jannik-laval.eu
>> http://rmod.lille.inria.fr
>> ---
>>
>>
>
>
>
> --
> Lukas Renggli
> www.lukas-renggli.ch
---
Jannik Laval
Hi!
Jannik, I took into account all your changes. According to what DSM says, there shouldn't be any cycle in Mondrian left. However, when I import Mondrian in Moose, it looks like method categories are not taken into account when imported. Is there a chance to fix this?
DSM is really cool. Amazing how easy it is to remove cycles...
Cheers,
Alexandre
On 13 Jul 2010, at 17:05, Laval Jannik wrote:
>> extend method>> Smalltalk::MOShapeSelector.a:withNameOnLeft:(Object,Object) in Mondrian-ComplexShape.
>> extend method>> Smalltalk::MOShapeSelector.a:withNameOnTop:(Object,Object) in Mondrian-ComplexShape.
>> extend method>> Smalltalk::MOShapeSelector.umlClass() in Mondrian-ComplexShape.
>> extend method>> Smalltalk::MOShapeSelector.form:(Object) in Mondrian-ComplexShape.
>> extend method>> Smalltalk::MOViewRenderer.browserClass() in Mondrian-Morphic.
>> extend method>> Smalltalk::MOViewRenderer.canvas() in Mondrian-Morphic.
>> extend method>> Smalltalk::MOViewRenderer.asMorph() in Mondrian-Morphic.
>> extend method>> Smalltalk::MOViewRenderer.open() in Mondrian-Morphic.
>> extend method>> Smalltalk::MOViewRenderer.open:(Object) in Mondrian-Morphic.
>> extend method>> Smalltalk::MOViewRenderer.framedNode:using:forEach:(Object,Object,Object) in Mondrian-Animation.
>> extend method>> Smalltalk::MOViewRenderer.framedNode:forEach:(Object,Object) in Mondrian-Animation.
>> extend method>> Smalltalk::MOViewRenderer.framedNode:using:(Object,Object) in Mondrian-Animation.
>> extend method>> Smalltalk::MOViewRenderer.framedNode:(Object) in Mondrian-Animation.
>> extend method>> Smalltalk::MOAnnouncer.popupView:delay:zoomedInBy:(Object,Object,Object) in Mondrian-Morphic.
>> extend method>> Smalltalk::MOAnnouncer.popupView:delay:(Object,Object) in Mondrian-Morphic.
>> extend method>> Smalltalk::MOAnnouncer.popupText:delay:(Object,Object) in Mondrian-Morphic.
>> extend method>> Smalltalk::MOAnnouncer.popupView:(Object) in Mondrian-Morphic.
>> extend method>> Smalltalk::MOAnnouncer.popupText() in Mondrian-Morphic.
>> extend method>> Smalltalk::MOAnnouncer.popupText:(Object) in Mondrian-Morphic.
>> extend method>> Smalltalk::MOAnnouncer.popupView:zoomedInBy:(Object,Object) in Mondrian-Morphic.
>
>
> ---
> Jannik Laval
>
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Hi,
I noticed that there are several ways in which people talk about
Moose. For example, I still see the Moose reengineering framework.
This might have been Ok 5 years ago, but now it does not reflect what
Moose is.
If you want to refer to Moose in your paper or in a talk, please use:
- short tag: the Moose analysis platform
- sentence: Moose is a platform for software and data analysis
Cheers,
Doru
--
www.tudorgirba.com
"To lead is not to demand things, it is to make them happen."
Hi Doru,
I would like to display the size of a list (GMListPresentation) in its title.
I have one constraint: it should be updated with the update of the list.
Is it possible ? If not, I will do something else :).
Cheers,
---
Jannik Laval