Hi Alexandre

The weird behaviour seems to be related to inline compilation in workspaces. I moved the execution into a method, now everything's back to normal.

In the meantime I verified the previously described scenarios with a fresh one-click image (Pharo 1.1).
One really dramatic example is this:
repo := FSGitRepository on: FSDiskFilesystem current working / 'foo'.
MessageTally spyOn: [ repo tagNames ]
---> 3ms for a huge repository with 10 tags.

MemoryProfiler
viewProfiling: [ repo tagNames ]

---> low space warning (same repository etc.)


I hope you might have an idea what's going wrong.

Cheers,
Max




Hi again.
Please ignore the last e-mail for the moment. There's something weird going on in my image. I'll run some tests on a fresh official image first and then post back.
Max


---------------------------------
Thanks Alexandre.
Now I tried out your example and they worked perfectly. I have run into two problem though which I don't know how to deal with:
1. When I run anything else than what you suggested, I do get the window for the profiling view but it is empty. E.g when I run this:

MemoryProfiler
viewProfiling: [ 1 to: 100000 do: [ :i |
(FSMemoryFilesystem new root / ('foo', i asString))
writeStreamDo: [ :stream | stream nextPutAll: 'foo' ] ] ]
2. When I run the code I am actually interested I get a low space warning. Example:
repo := FSGitRepository on: FSMemoryFilesystem new root / 'foo'
MemoryProfiler
viewProfiling: [ repo head ]

I'll be happy to run any tests you suggest. If you'd like to run the code yourself, get the packages from Gofer:
Gofer new
squeaksource: 'GitFS';
package: 'FS-Git';
package: 'Filesystem';
load.
Cheers,
Max


On 09.11.2010, at 22:42, Alexandre Bergel wrote:
Hi Max,

Um... I should be able to get a visualisation by running somthing like this right (I only installed it, didn't subclass anything)?

MemoryProfiler
viewProfiling: [ FSDiskFilesystem current working / foo ].

I get a window but there's nothing in it...

The piece of code you want to profile needs is executed twice, and it needs "to be time consuming" (~ 1 second).
For example, try:

MemoryProfiler
viewProfiling: [
| view |

view := MOViewRenderer new.
view nodes: (1 to: 5000).
view root applyLayout ]

or

MemoryProfiler
viewProfiling: [ (1 to: 2) collect: [ :i | ConfigurationOfMetacello project currentVersion ] ]

to get a nice picture

Also, is selecting the expression in the block above, right clicking and selecting "memory profile it" equivalent to sending #viewProfiling: ?

yes

Reading your paper I get the idea that this should work, when looking at the instructions on the moose site it rather seems that I need to subclass MemoryProfiler to actually profile anything.

No need to subclass.

Cheers,
Alexandre




On 09.11.2010, at 15:02, Alexandre Bergel wrote:

Ok, but please, provide feedback.

Alexandre


On 9 Nov 2010, at 10:40, Max Leske wrote:

Sounds like what I just needed! I'll try it out.

Cheers,
Max


On 09.11.2010, at 12:42, Alexandre Bergel wrote:

Hi Guido,

We wrote a profiler to keep track of memory consumption.

http://bergel.eu/download/papers/Berg10g-MemoryProfiling.pdf

It will be presented at Smalltalks next week.

Cheers,
Alexandre

On 8 Nov 2010, at 23:47, Guido Stepken wrote:

E.g.: Three different solutions for a Euler problem:

(1 to: 999) inject: 0 into: [:sum :i | (i \\ 3 = 0) | (i \\ 5 = 0)
ifTrue: [sum + i]
ifFalse: [sum]]


(1 to: 999) detectSum: [:i | (i \\ 3 = 0) | (i \\ 5 = 0) ifTrue: [i] ifFalse: [0]]

(1 to: 999) detectSum: [:i | i * (#(0 0 1 0 1 1 0 0 1 1 0 1 0 0 1) atWrap: i)]

How do i measure the exact memory footprint of each solution?

Pharo claims having reduced memory footprint at many places. Can that be proofed, e.g. with one comparable demo app, once run in old squeak, once in Pharo 1.1/1.2?

And no, MessageTally spyOn: does not do right!

Tnx in advance, Guido Stepken



--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.









--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.









--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.